1

部分的に機能させるのに問題があります。

ローカル変数を介してオブジェクトをパーシャルに渡したいのですが、

undefined method `model_name' for NilClass:Class 

常にエラー。ただし、変数は.to_yamlを使用して部分的に呼び出すことができるため、渡されます。これにより、すべての変数のプロパティが得られます。

しかし、form_forで使用しようとすると、そのエラーが発生します。

多分それは私のdbクエリと関係があります。別のローカル変数で呼び出そうとしてもエラーは発生しないからです。しかし、私のクエリは単一のオブジェクトを生成する必要がありますか、それとも私はそれで間違っていますか?

これが私の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 がそうではないことを確信していますか? nil 値を取得しますか? 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

関連トピックの1つに基づいて解決策を見つけました( Render :partial a random object by id by DB, in custom form )! 問題は、パーシャルを 4 回呼び出さなければならないことでした。しかし、クエリ結果にレコードが含まれていたのは 1 つのケースだけでした。レールが記録されないたびに、このエラー メッセージがスローされました。部分呼び出しの 1 つに少なくとも結果があることは知っていましたが、各結果に 1 つある必要があることを認識していませんでした。ありがとうございます!

于 2013-03-02T10:02:46.580 に答える