2

私はいくつかのliタグにこのコードを入力しようとしています:

<% @events.each do |event| %>
  <li>
    <span class="eventname"><%= event.name %></span>
    <span class="eventlocation"><%= event.location %></span>
  </li>
<% end %>

そして、「今日」、「明日」などのリンクがいくつかあります。今日ヒットしたときに、今日のイベントを表示したいと思います。明日当たったら明日が現れたいです。私はAJAXチュートリアルとjavascriptチュートリアルをどこでも見てきましたが、これをRailsで行う方法に完全に迷っています。

私が考えた1つの方法は、このコードブロックをパーシャルにし、パーシャルごとに少し変更して、表示したい特定のイベントが発生するようにすることです。しかし、それでも同じ問題が発生します。リンクのクリックに基づいて特定のパーシャルを表示する方法がわかりません。

4

1 に答える 1

3

与えられたイベントのセット(任意のタイプ)をレンダリングするパーシャルが1つあります。それを呼び出しましょう。_events.html.erb

_events.html.erb:

<% events.each do |event| %>
  <li>
    <span class="eventname"><%= event.name %></span>
    <span class="eventlocation"><%= event.location %></span>
  </li>
<% end %>

fetch_events次に、js応答を返すという名前のアクションを作成します。

Class EventsController < ApplicationController
  def fetch_events
    @events = Event.where(type: params[:type])
    respond_to do |format|
      format.js
    end
  end
end

もちろんroutes.rbで

match 'fetch_events/:type' => 'events#fetch_events', as: :fetch_events

これでビルドアウトしfetch_events.js.erbます。このファイルは、id'events'のdivの内容をレンダリングされたパーシャルに設定します。

fetch_events.js.erb:

$('#events').html(<%= escape_javascript(render :events, events: @events) %>)

ここで、ページビューに、応答を含むid'events'のhavedivを追加します。一方、ajaxは、を使用して呼び出すことができます。link_to

<%= link_to 'today', fetch_events_path(type: :today),  :remote => true %>
<%= link_to 'tomorrow', fetch_events_path(type: :tomorrow),  :remote => true %>
于 2012-12-27T23:54:01.377 に答える