我有一个问题要让我的部分工作。
我想通过局部变量将对象传递给局部变量,但我得到了
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 %>
答案 0 :(得分:2)
可能在您的部分中, partneroffer 是一个nil对象,因此它没有“model_name”方法。
您正在以正确的方式呈现视图,并且您正在以正确的方式传递本地人,但是,您确定Partneroffer.where(:partner_id =&gt; @ partner.id,:yearname_id =&gt; 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 %>
答案 1 :(得分:0)
我找到了基于其中一个相关主题(Render :partial a random object from DB by id, in custom form)的解决方案!问题是我必须打四次部分。但在一个案例中,我的查询结果中有一条记录。每次没有记录栏时都会抛出此错误消息。我知道其中一个部分调用至少有一个结果,但是并不知道每个结果中都必须有一个结果。感谢weexpectedthis!