0

我有一个事件数据库,我希望它显示“今天的事件”。

我有那部分工作。在页面底部我有一个日历,当您单击日期时,我希望它更新列出的事件以显示新日期。

目前我有

<% date = Date.current %>
<% @events.each do |event| %>
<% if event.eventdate === date %>
    <%= event.title %><br>
<% end %>
<% end %>

例如按钮是

<button type="submit" id="dateChange" value="01-01-2013">January 1</button>

jQuery是

$(document).ready(function() {
    $('#setdate').html("<% date = Date.tomorrow %>")
 });
});

它将 html 更新到明天(就像测试一样)。

两个问题-> 如何让它更新列出的实际事件以及如何提取按钮的值并将其用作 Date 变量?

也不确定在我的控制器中做什么,它只是一个索引功能。

4

1 回答 1

1

让您的控制器响应 JS 请求并将标记生成保留在部分内部,以便您可以轻松地渲染该部分。此外,您需要确保您的链接/按钮将远程属性设置为 true,否则它将不起作用。

这是一个我没有测试过的例子,但它应该可以工作。

index.html.erb

<div id="events">
    <%= render( 'events_list' ) %>
</div>

_events_list.html.erb

<% date ||= Date.current %>
<% @events.each do |event| %>
    <% if event.eventdate === date %>
        <%= event.title %><br>
    <% end %>
<% end %>
<%= link_to "#{date.tomorrow}", events_path({:date => date.tomorrow}), :remote => true %>

events_controller.rb

...
def index
    @events = Event.all
    @next_date = params[:date]
  respond_to do |format|
    format.html
    format.js # By default this will look for views/events/index.js.erb
  end
end
...

index.js.erb

$('#events').html("<%= escape_javascript render( 'events_list', :date => @next_date ) %>");

试一试,让我知道。

于 2013-03-31T07:13:21.727 回答