一个新页面,使用设计注册路径的嵌套表单

时间:2013-05-28 05:15:58

标签: ruby-on-rails-3 devise

我正在尝试使用设计在自定义页面中构建嵌套表单。

出现的错误是:nil的未定义方法`build_profile':NilClass

   <%= form_for("user", :url => user_registration_path) do |f| %>
      <%= f.email_field :email, :autofocus => true, :placeholder => 'E-mail Address' %>
      <%= f.password_field :password, :placeholder => 'Password' %>
      <%= f.password_field :password_confirmation, :placeholder => 'Password Confirmation' %>

      <% @user.build_profile %>

      <%= f.fields_for :profile do |profile_form| %>

      <%= profile_form.text_field :name, :placeholder => 'Name' %>
      <%= profile_form.text_field :address, :placeholder => 'Address' %>
      <%= profile_form.phone_field :phone, :placeholder => 'Phone (example: 0193284647)' %>

     <% end %>

     <p><%= f.submit "Sign up", :class=>'btn btn-primary' %> </p>
    <% end %>

编辑(额外信息):

我应该通过创建users_controller.rb来添加@user = @ user.build_profile吗?

它会导致设计问题吗?

1 个答案:

答案 0 :(得分:0)

是的,你必须这样做

@user = @user.build_profile
registrations_controller.rb中的

。并且,在routes.rb方法中devise中提及自定义控制器。

你应该像

这样的东西
 class Registrations < Devise::RegistrationsController
  def new
    @user = User.new
    @user = @user.build_profile
    super 
  end
 end