2011-10-24 55 views
0

我有這樣的:Rails使用兩次集合來呈現部分?

<%= render :partial => "rewards", :collection => @rewards, :as => :reward %> 

當我數與<%= @rewards.count %>集合中的項目,它顯示1,和我檢查編分貝即只有一個獎勵。但是,部分在我的主視圖中呈現兩次,第二個爲空(reward == nil)。任何線索?

更新: 找到原因,這使得語句之前,有一個user.rewards.build語句創建一個表單:

<%= render :partial => "form_reward", :locals => {:user => @user, :reward => @user.rewards.build } %> 
<%= render :partial => "rewards", :collection => @rewards, :as => :reward, :locals => {:user => @user } %> 

莫名其妙的局部渲染這個對象也!我想這是因爲名字污染。那麼現在如何克服這個問題呢?

回答

0
<%= render :partial => 'rewards', :object => @rewards, :as => :reward %> 

你應該能夠訪問它reward測試試試這個:

<%= reward.inspect %> 

喔而引起的,如果它應該repeatet你應該把它作爲一個:collection,而不是:object喜歡它在我的例子中

0

我建議你檢查@rewards填充的查詢。好像在@reward集合中有兩個對象一個獎勵對象和一個零對象。

您可以使用集合的緊湊方法來刪除零對象。

+0

請看我的更新。 – Rn2dy

+0

這似乎很奇怪......我恐怕原因可能是別的東西......另外我試圖在我的開發實例中重現該問題,但我不能... – nkm

+0

我已經把更多的代碼放到我的問題中,一旦我刪除表格部分,那麼就不會有成癮獎勵對象。 – Rn2dy