我們將有一個部分是會使一組給定的事件(任何類型),我們稱之爲_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
ofcourse在routes.rb中
match 'fetch_events/:type' => 'events#fetch_events', as: :fetch_events
現在我們建立了fetch_events.js.erb
,該文件將設置div的內容ID爲 '事件' 的渲染部分。
fetch_events.js.erb:
$('#events').html(<%= escape_javascript(render :events, events: @events) %>)
現在在你的頁面視圖中添加具有的div id爲 '事件' 將包含響應,而 的AJAX可以使用被稱爲link_to
<%= link_to 'today', fetch_events_path(type: :today), :remote => true %>
<%= link_to 'tomorrow', fetch_events_path(type: :tomorrow), :remote => true %>
我不知道是否這樣做,但ERB標籤在部分迴路內部是錯誤的。還值得注意的是,一旦選擇了過濾器,您將需要觸發AJAX請求。但這是錢的答案。 –
我修復了循環的erb標籤。謝謝 – Khaled
這似乎正是我要找的!一個快速的問題,但(真的,2):.js.erb文件去了哪裏,以及如何觸發一個AJAX請求?通過AJAX請求,他的意思是<%= link_to'sometext':method =>:fetch_events%> type deal? – user1810958