1

我有一个日历页面,显示一个人整个月的例行公事。在顶部,我有上个月和下个月的按钮。单击这些时,我对 change_date 操作进行 AJAX 调用,该操作会更新日期并查找新例程。当change_date.js.erb被调用时,我是否必须再次编写代码来更改日常操作的内容?这似乎违反了 DRY。有什么方法可以重用我在初始加载时用来填充页面的部分来用新值重新填充页面?

4

2 回答 2

0

当页面首次加载时,我也会通过 ajax 加载该人的例程。

我会将它封装在一个 js 函数中,并在第一次加载页面时以及每次更改月份时调用该函数。

于 2013-04-14T00:08:14.353 回答
0

当然,有。只需render像在 html 模板中一样使用。通常支持 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在这种情况下使用根据查询参数操作的方法......

于 2013-04-14T00:10:00.810 回答