2016-05-05 2 views
0

Я использую ajax, чтобы получить выбранную пользователем дату с datepicker, затем передать их контроллеру для вычисления результата, а затем передать результат обратно для просмотра.Параметр Rails от контроллера не отображается в поле зрения

В моей модели у меня есть:

def mobile_type_count(name,name1,field, 
    filed1,value, start_time, end_time) 
........ 
end 

Контроллер analyzer_controller.rb

def data 

start_time = params[:start_date]? 
     Date.parse(params[:start_date]) :Date.iso8601 
end_time = params[:end_date]? 
     Date.parse(params[:end_date]) :Date.iso8601 

    @iphone =Analyzer.new. 
     mobile_type_count('deviceOS','mobileNum','$deviceOS', 
         '$mobileNum','iOS' , start_time , end_time ) 
     @android = Analyzer.new. 
     mobile_type_count('deviceOS','mobileNum','$deviceOS', 
         '$mobileNum','Android' , start_time, end_time) 

end 

Посмотреть data.html.erb

<div class="input-daterange input-group" id="datepicker"> 
    <input type="text" class="input-sm form-control" name="start" value="2016-04-11" id="startDate" /> 
    <span class="input-group-addon">to</span> 
    <input type="text" class="input-sm form-control" name="end" value="2016-04-13" id="endDate" /> 
    </div> 
    <%= button_tag(type: 'submit', class: "btn btn-default btn-sm", :id => 'get_data') do %> 
     Submit 

    <% end %> 
</div> 
<div class="ibox-content"> 
     <%= pie_chart({"iphone" => @iphone, "android" => @android}) %> 
    </div> 

Ajax

<script type="text/javascript"> 


    $(document).ready(function() { 

    $('#get_data').click(function(){ 
     var sd = $('#startDate').val(), 
      ed = $('#endDate').val() 
    $.ajax({ 
     url: "/analyzer/data", 
     type: "post", 
     data: {'start_date' :sd, 'end_date': ed}, 

     success: function(){ 
     }, 
     error:function(){ 
     alert('Error'); 
     } 
    }); 
    }); 

при выборе диапазона дат и нажмите кнопку отправки, я ничего не получаю, но когда я использовалputs, чтобы проверить, если выбранная дата была передана в контроллер

<%= puts pie_chart({"iphone" => @iphone, "android" => @android}) %> 

Я могу получить результат, напечатанный на Терминале,

<script type="text/javascript"> 
    new Chartkick.PieChart("chart-1", {"iphone":[11],"android":[10]}, {}); 

@iphone = [11] @android = [10], который является правильным,

, когда я удалить puts, а затем проверить результат в браузере, @iphone и @android пустые arraies:

<script type="text/javascript"> 
    new Chartkick.PieChart("chart-1", {"iphone":[],"android":[]}, {}); 
</script> 

не уверен, что произошло, надеюсь, что кто-то может мне объяснить немного. Спасибо

ОБНОВЛЕНО
здесь the mobile_type_count метод, но я уверен, что этот метод хорошо, иначе <%= puts pie_chart({"iphone" => @iphone, "android" => @android}) %> не возвратит никакого результата. Причина, почему я использую puts только для тестирования, я думаю, что проблема является результатом (@iphone, @andriod) не получил вынесенный в представлении

def mobile_type_count(name,name1,field, filed1,value, start_time, end_time) 

date_match = {:$match => {:created_at => { :$gt => start_time , :$lt => end_time }}} 
match = { :$match => {name => value}} 
group ={:$group =>{ :_id => 
         {name => field, 
          name1 => filed1}, 
        :count => {:$sum =>1} 
}} 
group1 = {:$group =>{:_id => 
          { name => field, 
          name1 => filed1}, 
         #:totalCount=> { :$sum => '$count' }, 
         :distinctcount => {:$sum => 1} 
}} 

mobile_usr= collection.aggregate([date_match,match,group,group1]) 

mobile_usr.map do |m| 
    m[:distinctcount] 
end 
    end 
+0

Похоже, 'mobile_type_count' возвращает пустой массив. Можете ли вы включить пример кода для метода 'mobile_type_count'? –

ответ

1

Удалить puts из ниже линии. В противном случае вы оказываете на свой $stdout.

<%= puts pie_chart({"iphone" => @iphone, "android" => @android}) %> 

Должно быть:

<%= pie_chart({"iphone" => @iphone, "android" => @android}) %> 
+0

Я использую puts только для тестирования, после удаления puts он все равно ничего не получает – roccia

+0

Тогда проблема в вашем методе 'pie_chart'. Не могли бы вы добавить его к своему вопросу? – Uzbekjon

+0

'pie_chart' - это метод из драгоценного камня чаркика, когда я просто поставил фактическую дату: Date.new (2016,4,11) на« mobile_type_count », диаграмму можно сгенерировать. – roccia

Смежные вопросы