0

以下是有效的 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_pathform_for ....

顺便说一句,使用 Rails 3.2.9

4

2 回答 2

4
try this

<div id="content-form">
<%= form_for @passion, url: passion_path do |f| %>
<%= render :partial => "form", :locals=>{:f => f } %>
<% end %>
</div>
于 2012-12-04T07:07:14.377 回答
3

您正在使用该:partial选项,这意味着您必须通过以下方式传递局部变量:locals

<%= render :partial => "form", :locals => { :f => f } %>

不太冗长的选项是:

<%= render "form", :f => f %>
于 2012-12-04T06:47:54.217 回答