Я создаю страницу планирования, которая показывает еженедельное расписание и хочу сделать стрелки внизу страницы, которые переключаются вперед и назад на неделю. Для этого я создаю в контроллере переменную @wbeg, которая по умолчанию имеет начало недели и два действия, week_after и week_before, с соответствующими файлами js.erb. Я не могу понять, как изменить переменную @wbeg с помощью ajax, и мне нужно сделать так, чтобы все оставалось на одной странице.
Вот контроллер:
class HomeController < ApplicationController
def home
end
def scheduling
@work_days = WorkDay.all
@jobs = Job.all
@wbeg = Date.today - Date.today.wday + 1 #beginning of this week
end
def week_before
respond_to do |format|
format.html { redirect_to scheduling_path notice: "You should not see this message, contact admin if you do."}
format.js
end
end
def week_after
respond_to do |format|
format.html { redirect_to scheduling_path notice: "You should not see this message, contact admin if you do."}
format.js
end
end
end
Страница планирования:
<p id="notice"><%= notice %></p>
<h1>Work Day Scheduling</h1>
<table>
<thead>
<tr>
<th>Job #</th>
<th>Job</th>
<th>Monday</th>
<th>Tuesday</th>
<th>Wednesday</th>
<th>Thursday</th>
<th>Friday</th>
<th>Saturday</th>
</tr>
</thead>
<tbody id = "main_table">
<%= render "home/main_table" %>
</tbody>
</table>
<%= link_to '<--', week_before_path, remote: true %>
<%= link_to '-->', week_after_path, remote: true %>
и две страницы js.erb:
$('#main_table').html("<%= j render 'main_table', locals: { wbeg: @wbeg - 7 } %>");
Другой:
$('#main_table').html("<%= j render 'main_table', locals: { wbeg: @wbeg + 7 } %>");
Я также уже пытался изменить переменную в week_before и после действий в контроллере, но он выдает ту же ошибку: «nil не может иметь операции» - «» или что-то еще, что просто означает, что она не распознает переменную.