我们将有一个部分是会使一组给定的事件(任何类型),我们称之为_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