2012-03-16 65 views
2

我希望有人能夠闡明什麼可能是一個簡單的錯誤。我試圖傳遞一個局部變量,文章,在部分_article.html.erb,另一部分嵌套在_article.html.erb。當部分代碼在_article.html.erb中時,它工作正常。我嘗試了很多變體(包括:locals),但似乎無法通過局部變量。無法將局部對象傳遞給Rails 3中的嵌套部分

_article.html.erb

<% if current_user.favorited?(article) %>  
      <%= render :partial => 'unfavorite', :object => article %> 
<% else %> 
      <%= render :partial => 'favorite', :object => article %> 
<% end %> 

_favorite.html.erb(包括最喜歡的和取消收藏或多或少是相同的,所以我只貼一個)

<%= form_for current_user.favorites.find_by_article_id(article), :html => { :method => :delete, :class => 'unfavorite_form', }, :remote => true do |f| %> 
      <div><%= f.hidden_field :article_id %></div> 
      <%= image_submit_tag("vote-favorite-on.png", :alt => "Favorite", :id => "favorites_button", :title => "Remove from favorites") %> 
<% end %> 

錯誤信息是:

 undefined local variable or method `article' for #<#<Class:0x491c2b0>:0x6727a58> 

回答

2

rendering導軌文檔提及使用對象的這樣的:

<%= render :partial => "customer", :object => @new_customer %> 

,說:

Within the customer partial, the customer variable will refer to @new_customer from the parent view. 

這使得它看起來像:對象變量被翻譯成部分的名稱。所以你的情況,在_favorite,你必須使用最喜愛的變量:

<%= form_for current_user.favorites.find_by_article_id(favorite), :html => { :method => :delete, :class => 'unfavorite_form', }, :remote => true do |f| %> 

個人而言,我更喜歡當地人語法,因爲這樣你可以明確的:

<%= render :partial => 'favorite', :locals => {:article => article} %> 
+0

謝謝,雖然工作我是積極的,我發佈之前嘗試過。 – 2012-03-16 04:00:39

+0

是的,那發生了;) – pschuegr 2012-03-16 04:02:39

相關問題