我有一个日历页面,显示一个人整整一个月的例程。在顶部,我有前一个月和下个月的按钮。单击这些时,我会对change_date操作进行AJAX调用,该操作会更新日期并查找新例程。调用change_date.js.erb时,是否必须编写代码才能再次更改日常操作的内容?这似乎违反了DRY。 有没有办法可以重复使用我在初始加载时填充页面的部分来重新填充具有新值的页面?
答案 0 :(得分:0)
我会在第一次加载页面时通过ajax加载人的例程。
我会将它封装在js函数中,并在首次加载页面时调用该函数,并且每次更改月份时都会调用该函数。
答案 1 :(得分:0)
当然,有。只需像在html模板中那样使用render
。通常,支持ajax和常规调用的设置看起来像这样(当然,名称是疯狂猜测的):
# controller
def change_date
@dates = Date.where(:date => params[:date])
respond_to do |format|
format.html
format.js
end
end
# change_date.html.erb
<ul id="calendar">
<%= render @dates %>
</ul>
# change_date.js.erb
$("#calendar").html("<%= escape_javascript(render @dates) %>");
# _date.html.erb
<li><%= date.date %></li>
所以你看,你可以在两种场景中使用相同的局部。
还有另外一个建议:根据您的设置,在控制器中没有其他方法可能会更加安静,但在这种情况下使用show
方法依赖于查询参数运行... < / p>