2014-10-05 51 views
0

我是新來的鐵軌和我想要做的是以下幾點:薪火使用Ajax諧音特定數據的Rails

我創建一個存儲和unstore按鈕保存和「未保存'事件分別。我用我的事件屬性和當前用戶來查找存儲的事件。通過使用Ajax和導軌的遠程功能,我將能夠改變按鈕的行爲從商店unstore或反之亦然。

在我_feed.html.erb

<% if @feed_items.any? %> 
    <ul> 
    <%= render partial: 'shared/feed_item', collection: @feed_items %> 
    </ul> 
<% end %> 

每個@feed_items包含一組數據(標題,類別等)。

在我_feed_item.html.erb

<li id="<%= feed_item.id %>" class="item"> 
    ... 
    <div class="small-3 text-center columns">   
     <%= render 'shared/store_form', event: feed_item %> 
    </div> 
    ... 
</li> 

事件符號將該feed_item發送到store_form。

在我_store_form.html.erb

<div id="store_form_<%= event.id %>"> 
    <% if event.stored?(current_user) %> 
     <%= render 'shared/unstore', event: event %> 
    <% else %> 
     <%= render 'shared/store', event: event %> 
    <% end %> 
</div> 

我再次將一個feed_item傳遞給partial。

_store.html.erb

<%= form_for(event.storages.build(saver_id: current_user.id, 
         organizer_id: event.user_id), 
         remote: true) do |f| %> 
    <div> 
     <%= f.hidden_field :organizer_id %> 
     <%= f.hidden_field :saved_id, value: event.id %> 
    </div> 
    <%= f.submit "store" %> 
<% end %> 

_unstore.html.erb

<%= form_for(event.storages.find_by(saver_id: current_user.id, 
         organizer_id: event.user_id) , 
      html: { method: :delete }, 
      remote: true) do |f| %> 
    <%= f.submit 'unstore' %> 
<% end %> 

create.js.erb

$("#store_form").html("<%= escape_javascript(render 'shared/store', event: event)%>") 

destroy.js.erb

$("#store_form").html("<%= escape_javascript(render 'shared/unstore', event: event) %>") 

而且點擊店/ unstore事件,當我得到這些錯誤。

ActionView::Template::Error (undefined local variable or method `event' for #<#<Class:0x00000004d69be8>:0x00000004d68d10>): 
    1: $("#store_form").html("<%= escape_javascript(render 'shared/unstore', event: event) %>") 


ActionView::Template::Error (undefined local variable or method `event' for #<#<Class:0x00000004d69be8>:0x00000004fdc6a0>): 
    1: $("#store_form").html("<%= escape_javascript(render 'shared/store', event: event)%>") 

我的問題是,我怎樣才能將特定的「事件」數據傳遞到部分。我不能用@feed_item到創建和銷燬JS因爲feed_item有組事件。有沒有更好的方法來處理這個問題?

回答

0

在你的行動創建並在控制器刪除您應該實例你的變量事件:由@event變化事件,改變你的JS到:

$("#store_form").html("<%= escape_javascript(render 'shared/unstore') %> 

,因爲你需要鴕鳥政策添加實例化瓦爾渲染調用,鐵軌正在爲你做

+0

我會嘗試這一個。如果它仍然無效,我會回覆。但是我對store和untore的部分需要顯示來自一組事件的每個事件狀態。 – Neil 2014-10-05 15:27:09