2013-03-02 49 views
1

我有一個問題,讓我的部分工作。調用部分與查詢調用對象

我想通過一個局部變量來傳遞一個對象的部分,但我得到一個

undefined method `model_name' for NilClass:Class 

錯誤所有的時間。但是這個變量被傳遞了,因爲我可以用.to_yaml來調用它,這給了我所有的變量屬性。

但是當我嘗試在form_for中使用它時,我得到了那個錯誤。

也許它與我的數據庫查詢有關。因爲當我嘗試用另一個局部變量調用它時,沒有錯誤。但我的查詢應該產生一個單一的對象,或者我錯了嗎?

這裏是我的show.html.erb:

<%= @partneroffer = Partneroffer.where(:partner_id => @partner.id, :yearname_id => year.id).first %> 
<%= render :partial => "form2", :locals => { :partneroffer => @partneroffer } %> 

這裏是我的部分(_form2.html.erb):

<%= form_for partneroffer , :html => { :class => 'form-horizontal' } do |f| %> 
    <%= f.label :partnerstatus_id, :class => 'control-label' %> 
    <%= f.collection_select(:partnerstatus_id, Partnerstatus.all, :id, :name) %> 
    <%= f.submit nil, :class => 'btn btn-primary' %> 
    <%= link_to t('.cancel', :default => t("helpers.links.cancel")), 
partner_year_terms_path, :class => 'btn' %> 
<% end %> 

回答

2

這可能是因爲在你的部分,partneroffer是一個零對象,所以它沒有方法「model_name」。

您以正確的方式呈現視圖,並且您以正確的方式傳遞當地人,但是,您確定Partneroffer.where(:partner_id => @ partner.id,:yearname_id => year.id) 。首先是沒有得到一個零值?在show.html.erb試試這個代碼:

<%- @partneroffer = Partneroffer.where(:partner_id => @partner.id, :yearname_id => year.id).first %> 
<%- if @partneroffer %> 
    <%= render :partial => "form2", :locals => { :partneroffer => @partneroffer } %> 
<%- else %> 
    @partneroffer is nil!!!! 
<%- end %> 
+0

非常感謝您的幫助!這確實是原因。一分鐘前我自己找到了解決方案! – coderuby 2013-03-02 10:05:08

0

我發現基於的相關議題之一(Render :partial a random object from DB by id, in custom form)的解決方案!問題是我不得不四次調用偏好。但只有一種情況下,我的查詢結果中有一條記錄。每次沒有記錄欄時,都會拋出此錯誤消息。我知道其中一個部分電話至少有一個結果,但沒有意識到每個結果都必須有一個結果。 Thx到weexpectedthis