我正在尝试使用以下代码填充一些li
代码:
<% @events.each do |event| %>
<li>
<span class="eventname"><%= event.name %></span>
<span class="eventlocation"><%= event.location %></span>
</li>
<% end %>
我有一些链接说“今天”,“明天”等,当我今天点击时,我希望今天的事件能够出现。如果我明天打,我希望明天出现。我通过AJAX教程和javascript教程到处查看,我完全迷失了如何在rails中执行此操作。
我考虑过的一种方法是让这段代码成为局部代码,然后对每个部分代码稍作修改,以便我想要显示的特定事件出现。但后来我仍然遇到同样的问题,我不知道如何根据链接的点击显示特定的部分。
答案 0 :(得分:3)
我们将有一个部分可以呈现一组给定的事件(任何类型)让我们称之为_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'的div,其中包含响应
可以使用link_to
<%= link_to 'today', fetch_events_path(type: :today), :remote => true %>
<%= link_to 'tomorrow', fetch_events_path(type: :tomorrow), :remote => true %>