2012-01-23 5 views
1

これは、部分表示のためのform.html.erbのコードです。ローカルvar:sidはレコードのIDとして定義されており、ローカルビューとしてstandards.html.erbパーシャルビューに渡す必要があります。ここでレールでのローカルvarのパス/リトリーブ方法3.1.0パーシャルビュー?

<% @rfq.standards.each do |r| %> 
    <p><%= render :partial => 'standards', :locals => { :f => f, :sid => r.id } %></p> 
    <% end %> 

は、基準部分図である。レンダリングされたとき

<%= f.association :standards, :collection => Standard.active_std.all(:order => 'name'), :label_method => :name, :value_method => :id, 
           :prompt => "Choose std", :label => "standard:", :include_blank => true, :selected => :sid %> 

、基準部分ビューには、選択したSIDと標準のコレクションをレンダリングする必要があります。しかし、上記のコードは標準を一切選択していません。試したsid(文字列):selected => sid。これにより、sidが定義されていないというエラーが発生します。

私の質問は、ビュー内でローカルvarを渡して取得する正しい方法は何ですか?本当にありがとう。

+2

'sid'はパーシャルビューのローカル変数であるため、' ...、:selected => sid%> 'という部分ビューで使うべきです。 ':sid'は単なるシンボリックな値なので動作できません。しかし、あなたの 'render:partial ...'の使い方は私にとっては大丈夫です。 – mliebelt

+0

私は地元の人々について広範にオンラインで検索しました。ほとんどすべての人が地元の人を使って、部分的に名前でアクセスします。しかし、何とかsidは部分的に定義されておらず、アクセスできません。 varを部分的に渡す別の方法はありますか?本当にありがとう。 – user938363

+0

理由は、完全に同じフォーマットの各場所で部分標準が呼び出されなかったからです。ある方法(ここには示していません)では、標準は:render:partial => standards、:locals => {:f => f}のように呼ばれました。追加後:sid => 0、ここでsidが正常に渡されます。 – user938363

答えて

1

この問題は、完全に同じ形式の各場所で部分標準が呼び出されなかったために発生しました。 1つの方法(ここには示されていません)では、部分標準は​​render :partial => standards, :locals => {:f => f}のように呼び出されました。追加後:sid => 0としてrender :partial => standards, :locals => {:f => f, :sid => 0}とすると、ここのsidが正常に渡されます。

関連する問題