将变量传递给部分

时间:2012-05-13 17:01:24

标签: ruby-on-rails ruby-on-rails-3 variables partial-views

我有以下内容和部分设置,但我继续收到错误,部分无法识别变量| builder |。

表格

<%= simple_form_for @firm  do |f| %>

<%= f.fields_for :events do |builder| %>
          <%= render 'event_fields', :builder => builder  %>
  <% end %>

<%= end %>

_events_fields partial

<fieldset>
<%= builder.input :name, :collection => ['Applications Open', 'Applications Close', 'Traineeship Starts'] %>
<%= builder.text_field :start_at, :class => 'datepicker' %>
<%= builder.hidden_field :all_day, :value => true %>
<%= link_to "remove", '#', class: "remove_fields" %>

任何想法我应该如何填充变量?或者,如果事实上这是正确的做法吗?如果有人可以帮助我更多地了解你需要如何以及为什么需要这样做,那将是非常有帮助的。

2 个答案:

答案 0 :(得分:3)

您需要告诉它它是局部视图并将哈希传递给locals选项。像这样:

<%= simple_form_for @firm  do |f| %>
    <%= f.fields_for :events do |builder| %>
        <%= render partial: 'event_fields', locals: {builder: builder} %>
    <% end %>
<% end %>

如果您正在使用Ruby 1.8,那么:

<%= simple_form_for @firm  do |f| %>
    <%= f.fields_for :events do |builder| %>
        <%= render :partial => 'event_fields', :locals => { :builder => builder } %>
    <% end %>
<% end %>

答案 1 :(得分:0)

partial_name将替换为具有目录名称的实际部分名称或部分名称。

我们会将data_object对象提供给partial,在partial中的局部变量data_variable下可用,并且相当于:

<%= render partial: "partial_name", locals: { data_variable: data_object } %>