以下是有效的Rails标准表单。
<div id="content-form">
<%= form_for @passion, url: passion_path do |f| %>
<%#= render :partial => "form", :f => f %>
<div class="alternate">
<%= f.label "Status" %>
<%= f.text_field :status %>
</div>
<% end %>
</div>
现在我使用以下内容将部分提取到_form.html.erb
:
<div class="alternate">
<%= f.label "Status" %>
<%= f.text_field :status %>
</div>
并将表单更新为:
<div id="content-form">
<%= form_for @passion, url: passion_path do |f| %>
<%= render :partial => "form", :f => f %>
<% end %>
</div>
但现在这会引发错误抱怨f
变量。
undefined local variable or method `f' for #<#<Class:0x0000012d51d3e8>:0x0000012d796ef8>
Extracted source (around line #2):
1: <div class="alternate">
2: <%= f.label "Status" %>
3: <%= f.text_field :status %>
4: </div>
这是为什么?它漂亮的Rails基本。
要考虑资源@passion
是单数的一件事。即resource :passion
(用户has_one激情)
因此,我必须在url: passion_path
中使用明确的form_for ...
。
顺便说一下,使用Rails 3.2.9
答案 0 :(得分:4)
try this
<div id="content-form">
<%= form_for @passion, url: passion_path do |f| %>
<%= render :partial => "form", :locals=>{:f => f } %>
<% end %>
</div>
答案 1 :(得分:3)
您正在使用:partial
选项,这意味着您必须使用:locals
传递局部变量:
<%= render :partial => "form", :locals => { :f => f } %>
较不详细的选项是:
<%= render "form", :f => f %>