2

我正在尝试li使用以下代码填充一些标签:

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

我有一些链接说“今天”、“明天”等,当我今天点击时,我希望今天的事件出现。如果我明天打我希望明天的出现。我通过 AJAX 教程和 javascript 教程到处查看,我完全不知道如何在 rails 中做到这一点。

我考虑的一种方法是让这个代码块成为部分代码,并为每个部分稍微更改它,以便出现我想要显示的特定事件。但是后来我仍然遇到同样的问题,我不确定如何根据点击链接来显示特定的部分。

4

1 回答 1

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 将包含响应,而 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 回答