我正在尝试使用设计在自定义页面中构建嵌套表单。
出现的错误是: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吗?
它会导致设计问题吗?
答案 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