如何在rails 3.1.0局部视图中传递/检索局部变量?

时间:2012-01-23 05:01:52

标签: ruby-on-rails ruby-on-rails-3.1

以下是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的正确方法是什么?非常感谢。

1 个答案:

答案 0 :(得分:1)

问题是由于在每个地方没有调用部分标准,格式完全相同。在一种方法(此处未示出)中,部分标准被称为:render :partial => standards, :locals => {:f => f}。添加后:sid =&gt; 0为render :partial => standards, :locals => {:f => f, :sid => 0},这里的sid成功传递。