2013-03-29 34 views
0

我有一個事件數據庫,我希望它顯示「今天的事件」。Ajax在rails中更新日曆

我有那部分工作。在頁面底部我有一個日曆,當你點擊日期我希望它更新列出的事件顯示新的日期。

現在我有

<% date = Date.current %> 
<% @events.each do |event| %> 
<% if event.eventdate === date %> 
    <%= event.title %><br> 
<% end %> 
<% end %> 

而且例如按鈕

<button type="submit" id="dateChange" value="01-01-2013">January 1</button> 

而jQuery是

$(document).ready(function() { 
    $('#setdate').html("<% date = Date.tomorrow %>") 
}); 
}); 

其更新HTML明天(只是作爲測試) 。

兩個問題 - >我如何使它更新列出的實際情況,如何拔鍵的值,並把它作爲日期變量?

不確定在我的控制器中做什麼,它只是一個索引函數。

回答

1

讓您的控制器來響應請求JS並保持內部的部分標記生成,因此您可以輕鬆地渲染只是一部分。您還需要確保您的鏈接/按鈕的遠程屬性設置爲true或不起作用。

這裏有一個例子,我沒有測試它,但它應該工作。

index.html.erb

<div id="events"> 
    <%= render('events_list') %> 
</div> 

_events_list.html.erb

<% date ||= Date.current %> 
<% @events.each do |event| %> 
    <% if event.eventdate === date %> 
     <%= event.title %><br> 
    <% end %> 
<% end %> 
<%= link_to "#{date.tomorrow}", events_path({:date => date.tomorrow}), :remote => true %> 

events_controller.rb

... 
def index 
    @events = Event.all 
    @next_date = params[:date] 
    respond_to do |format| 
    format.html 
    format.js # By default this will look for views/events/index.js.erb 
    end 
end 
... 

index.js.erb的

$('#events').html("<%= escape_javascript render('events_list', :date => @next_date) %>"); 

給它一個嘗試,讓我知道。

+0

完美,謝謝! –

+0

你知道我怎麼能夠創建一個事件eventdate ===日期的變量,而不是使用if語句嗎? –

+0

我想你的應用程序使用數據庫,所以我會開始尋找模型和查詢接口的rails文檔: http://guides.rubyonrails.org/active_record_querying.html 你可以在模型中聲明一個範圍來獲取例如,某個日期的所有事件。 –