将实例或局部变量从布局传递到Rails中的视图

我正在尝试使用
form_for
设置一个相当复杂的形式。此表单需要位于多个视图中,其中某些字段可用于所有操作,而其他字段特定于每个单独的操作。 我认为为了节省自己的代码重复,我会使用布局来渲染一般部分,如下所示:
# layout.html.erb
<%= form_for @instance do |f| %>
  <%= f.text_field :foo %><!-- This field needs to be available in all views -->
  <...><!-- Additional non-form related html -->
  <%= yield %>
  <%= f.submit %>
<% end %>

# first_view.html.erb
<% f.fields_for :bar do |b| %>
  <%# Fields %><!-- These fields should only be available in first_view -->
<% end %>

# second_view.html.erb
<% f.text_field :baz %><!-- This field should only be available in second_view -->
现在,问题是我不能将
f
作为局部变量从布局传递给视图。我甚至无法设置实例变量(例如
@f = f
)并在视图中访问它。 我怎么能这样做?任何有关更好实施的建议都会受到欢迎。     
已邀请:
你能否将表单提取为一个局部,它将':bar'或':baz'字段作为一个局部,由视图渲染部分传递? 即
render :partial => 'complex_form' :locals => { :text_field_param => :bar }
上面的行将在first_view中调用,而partial将包含所有表单逻辑和标记,使用'text_field_param'作为专用文本字段。     
最后,我决定采用简单,傻瓜式的解决方案。我现在已将
form_for
移动到各个视图中,并将一般字段放在一个部分中。这意味着我必须复制
form_for
以及部分的渲染,但我可以忍受。     

要回复问题请先登录注册