2012-12-27 30 views
2

我試圖填充某些li標籤與此代碼:如何在單擊鏈接時使用Rails代碼填充div?

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

而且我有一些鏈接,說:「今天」,「明天」等,當我今天打我希望從今天的事件顯示向上。如果我明天擊中,我希望明天顯示出來。我已經通過AJAX教程和JavaScript教程查找無處不在,我完全迷失瞭如何在rails中執行此操作。

我認爲這樣做的一個方法是讓這段代碼變爲部分代碼,並對每個部分略微改變一下,以便我想顯示的特定事件出現。但是,我仍然堅持着同樣的問題,我不確定如何根據鏈接的點擊顯示特定的部分。

回答

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 

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 %> 
+0

我不知道是否這樣做,但ERB標籤在部分迴路內部是錯誤的。還值得注意的是,一旦選擇了過濾器,您將需要觸發AJAX請求。但這是錢的答案。 –

+0

我修復了循環的erb標籤。謝謝 – Khaled

+0

這似乎正是我要找的!一個快速的問題,但(真的,2):.js.erb文件去了哪裏,以及如何觸發一個AJAX請求?通過AJAX請求,他的意思是<%= link_to'sometext':method =>:fetch_events%> type deal? – user1810958