将表单变量传递给部分模板 - Rails 4

时间:2014-12-28 22:05:40

标签: ruby-on-rails ruby-on-rails-4

我有一个使用semantic_form_for标记的编辑页面

<%= semantic_form_for @photog do |f| %>

表单变得越来越长,我想将其分解为多个部分,以便视图更具可读性。

我正在尝试在edit.html.erb模板中创建部分内容,例如

  <%= render 'favorite_things', locals: {f: f} %>

这段代码打破了说法 未定义的局部变量或方法`f'用于#&lt;#:0x007ff5a110abf0&gt;

我需要了解如何传递f对象,以便部分可以读取它和像f.input这样的东西

 <!-- favorite things partial -->
 <div class='edit_photog_header'>A List Of Your Favorites</div>
 <%= f.input :fav_lens, :label => "Lens" %>
 <%= f.input :fav_camera, :label => "Camera" %>
 [and so on]

由于

1 个答案:

答案 0 :(得分:7)

当您使用locals

render partial

<%= render partial: path_to_partial, locals: locals_hash %>

如果您只是使用render,则应该这样做:

<%= render path_to_view, locals_hash %>

在你的情况下会是:

<%= render 'favorite_things', f: f %>