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を更新します(テストとして)。

2 つの質問 -> リストされている実際のイベントを更新するにはどうすればよいですか? また、ボタンの値を取得して 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 に答える