0

以下は、動作する Rails std フォームです。

<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 を使用して

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 に答える