2012-06-04 94 views
2

我做了嵌套窗體,就像在railscasts中做的一樣,並且渲染出現問題。 以我形式我有通過渲染傳遞變量

<% form_for @question, :url => user_questions_path, :html => {:multipart => true} do |f| %> 

      <%= f.label :name %> 
      <%= f.text_field :name, :class => "text_input" %> 
      <%= f.label :description %> 
      <%= f.text_area :description, :cols => "1", :rows => "1", :class => "textarea" %> 

      <div id="reg"> 
      <%= render :partial => "user_form", :f => f %> 
      </div> 


      ... 
<% end %> 

在我user_form文件I有

<% f.fields_for :user do |builder| %> 
      <%= builder.label :email %> 
      <%= builder.text_field :email, :class => "text_input" %> 
      <%= builder.label :password %> 
      <%= builder.text_field :password, :class => "text_input" %> 
      <%= builder.label :password_confirmation %> 
      <%= builder.text_field :password_confirmation, :class => "text_input" %> 
      <% builder.fields_for :user_profile, @question.user.user_profile || @question.user.build_user_profile do |u| %> 
       <%= u.label :secondname %> 
       <%= u.text_field :secondname, :class => "text_input" %> 
       <%= u.label :firstname %> 
       <%= u.text_field :firstname, :class => "text_input" %> 
      <% end %> 
<% end %> 

我在局部

未定義局部變量或方法`F」的第一行的錯誤爲

我做錯了什麼?(我正在使用導軌2.3,但在導軌2中也使用過)。 在此先感謝

+0

你缺少':當地人=> {...}'。還有兩點建議:1)使用'[:user,@question]'作爲資源,你可以跳過:url選項。 2)在用戶部分之外調用'fields_for',這提高了模塊性。 – tokland

回答

9

我想你可能需要更改

<%= render :partial => "user_form", :f => f %> 

下列之一:

<%= render "user_form", :f => f %> 
<%= render :partial => "user_form", :locals => {:f => f} %> 
+0

謝謝':partial =>「user_form」,:locals => {:f => f}%>'幫助 – Pavel

+0

太棒了!較短的表單將在更高版本的Rails中工作 - 我不確定添加了哪個版本。 – Emily