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 %>
4

2 回答 2

2

可能在您的部分中,partneroffer是一个 nil 对象,因此它没有方法“model_name”。

您以正确的方式呈现视图,并且以正确的方式传递当地人,但是,您确定 Partneroffer.where(:partner_id => @partner.id, :yearname_id => year.id).first 不是获得零值?在 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 %>
于 2013-03-02T09:59:39.747 回答
0

我找到了基于相关主题之一的解决方案(Render :partial a random object from DB by id, in custom form)!问题是我必须调用部分四次。但仅在一种情况下,我的查询结果中有记录。每次没有记录时,rails 都会抛出此错误消息。我知道其中一个部分调用至少有一个结果,但不知道每个结果中都必须有一个。感谢我们期待这个

于 2013-03-02T10:02:46.580 回答