以下是form.html.erb中用于部分视图的代码。局部var:sid被定义为记录的id,它应该作为局部变量传递给局部视图standards.html.erb。
<% @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 =&gt; SID。这会导致错误,说明没有定义sid。
我的问题是在视图中传递和检索本地var的正确方法是什么?非常感谢。
答案 0 :(得分:1)
问题是由于在每个地方没有调用部分标准,格式完全相同。在一种方法(此处未示出)中,部分标准被称为:render :partial => standards, :locals => {:f => f}
。添加后:sid =&gt; 0为render :partial => standards, :locals => {:f => f, :sid => 0}
,这里的sid成功传递。