Ruby on rails 使用查询调用中的对象调用分部

Ruby on rails 使用查询调用中的对象调用分部,ruby-on-rails,partial-views,Ruby On Rails,Partial Views,我有一个问题,让我的部分工作 我想通过一个局部变量将一个对象传递给一个分部,但是我得到了一个 undefined method `model_name' for NilClass:Class 总是出错。但是变量被传递了,因为我可以用.to_yaml在部分调用它,这给了我所有变量的属性 但当我试图以一种形式使用它时,我得到了这个错误 也许这和我的数据库查询有关。因为当我尝试用另一个局部变量调用它时,没有错误。但我的查询应该只生成一个对象,还是我错了 这是我的show.html.erb: <

我有一个问题,让我的部分工作

我想通过一个局部变量将一个对象传递给一个分部,但是我得到了一个

undefined method `model_name' for NilClass:Class 
总是出错。但是变量被传递了,因为我可以用.to_yaml在部分调用它,这给了我所有变量的属性

但当我试图以一种形式使用它时,我得到了这个错误

也许这和我的数据库查询有关。因为当我尝试用另一个局部变量调用它时,没有错误。但我的查询应该只生成一个对象,还是我错了

这是我的show.html.erb:

<%= @partneroffer = Partneroffer.where(:partner_id => @partner.id, :yearname_id => year.id).first  %>
<%= render :partial => "form2", :locals => { :partneroffer => @partneroffer } %>
<%= 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 %>
<%- @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 %>
@partner.id,:earquame\u id=>year.id)。第一个%>
“form2”,:locals=>{:partneroffer=>@partneroffer}%>
这是我的部分(_form2.html.erb):

{:class=>'form horizontal'}do | f |%>
'控件标签'%>
“btn btn主节点”%>
t(“helpers.links.cancel”),
合作伙伴\u年份\u期限\u路径,:class=>btn'>

可能是在您的partial中,partneroffer是一个nil对象,因此它没有“model\u name”方法

您以正确的方式呈现视图,并且以正确的方式传递局部变量,但是,您是否确定Partneroffer.where(:partner\u id=>@partner.id,:earguame\u id=>year.id)。第一个值不是零?在show.html.erb中尝试以下代码:

<%= @partneroffer = Partneroffer.where(:partner_id => @partner.id, :yearname_id => year.id).first  %>
<%= render :partial => "form2", :locals => { :partneroffer => @partneroffer } %>
<%= 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 %>
<%- @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 %>
@partner.id,:earquame\u id=>year.id)。第一个%>
“form2”,:locals=>{:partneroffer=>@partneroffer}%>
@partneroffer为零!!!!

我根据一个相关主题()找到了解决方案!问题是我不得不打四次电话给分部。但只有一种情况下,我的查询结果中有一条记录。每次没有记录时,rails都会抛出此错误消息。我知道在一个部分调用中至少有一个结果,但不知道每个结果中都必须有一个结果。谢谢

非常感谢你的帮助!这确实是原因。一分钟前我自己找到了解决办法!