Как изменить представление в js of rails
Как изменить значение переменной представления в JavaScript. Я имею в виду, когда я выбираю апрель из раскрывающейся таблицы, будут отображаться только данные за апрель, а текущие данные таблицы исчезнут и обновятся. Как мне это сделать? Помоги мне
Мой JS
:javascript
var updateMonth = function(){
var month_id = $("#select_other_month").val();
console.log(month_id)
}
вот мой выбор тега (выпадающий)
%select{:name => "options", :id=>"select_other_month",:onchange=>"updateMonth()"}
%option.placeholder{:disabled => "", :selected => "", :value => ""} see other months
%option{:value => "0"} this month
-a=@this_month - 1.month
%option{:value => "5"}=a.strftime('%Y-%m')
-b=@this_month - 2.month
%option{:value => "4"}=b.strftime('%Y-%m')
-c=@this_month - 3.month
%option{:value => "3"}=c.strftime('%Y-%m')
-d=@this_month - 4.month
%option{:value => "2"}=d.strftime('%Y-%m')
-e=@this_month - 5.month
%option{:value => "1"}=e.strftime('%Y-%m')
и мой стол выглядит так
.table{:id=>"time_table"}
%table{:border=>"1"}
%thead
%tr
%th No
%th Name
-(@xmonth.at_beginning_of_month..@xmonth.at_end_of_month).each do |day|
-if (day.saturday? || day.sunday?)==false
%th=day.strftime("%d")
%th Total days
%th Total time
Я хочу изменить мой @xmonth от JS
Примечание: @this_month = Date.today
1 ответ
var updateMonth = function(){
var month_id = $("#select_other_month").val();
$.ajax({
url: '/your_controller/its_method', //make sure to add this path to routes file
data: {
month_id: month_id
},
success: function(response){
$("#target_area").html(response);
},
error: function(error_res){
console.log(error_res);
}
});
}
В ваш файл представления добавьте идентификатор, чтобы мы могли заменить его содержимое новым полученным ответом.
%thead{:id => "target_area"}
%tr
%th No
%th Name
...
В вашем контроллере
class YourController
def your_method
month_id = params[:month_id]
#update your @xmonth by month_id
#your new information should be inside @xmonth object
respond_to do |format|
format.html {render partial: 'your_controller/your_method/your_partial.haml.erb' }
end
end
end
Создайте свой частичный файл _your_partial.haml.erb
с содержанием, которое необходимо заменить
%tr
%th No
%th Name
-(@xmonth.at_beginning_of_month..@xmonth.at_end_of_month).each do |day|
-if (day.saturday? || day.sunday?)==false
%th=day.strftime("%d")
%th Total days
%th Total time
Содержание частичного будет заменен на ваш взгляд с содержанием #target_area
когда вы получите успешный ответ. Смотрите функцию updateMonth.
Надеюсь это поможет