您好我正在使用设计注册用户,并且我想在每次用户注册时创建与用户相关的配置文件,问题是当我尝试从配置文件模型中添加人员的全名时设计用户注册的注册视图,它没有显示......
这是我的模特:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :profile_attributes
has_one :profile, dependent: :destroy
accepts_nested_attributes_for :profile
# attr_accessible :title, :body
end
这是个人资料模型
class Profile < ActiveRecord::Base
attr_accessible :email, :name, :phone, :code
belongs_to :user
validates_presence_of :user
end
这是修改后的设计视图:
<% provide(:title, 'Sign up' ) %>
<h2>Sign up</h2>
<div class="row">
<div class="span6 offset3">
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= render 'shared/error_messages', object: resource %>
<%= f.fields_for :profile do |profile_form| %>
<%= profile_form.label :full_name %>
<%= profile_form.text_field :name %>
<% end %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
<div class="form-actions">
<%= f.submit "Sign up", class: "btn btn-large btn-primary" %>
</div>
<% end %>
<%= render "devise/shared/links" %>
</div>
</div>
我看不出为什么名称文字字段不会显示有什么问题......
感谢您的帮助
答案 0 :(得分:5)
想出来,这很简单我觉得不好......所以这就是:
我忘记在表单上生成新的个人资料,所以最终看起来像这样:
.
.
.
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= render 'shared/error_messages', object: resource %>
<div class="invisible">
<%= resource.build_profile %>
</div>
<%= f.fields_for :profile do |profile_form| %>
<%= profile_form.label :full_name %>
<%= profile_form.text_field :name %>
<% end %>
<%= f.label :email %>
<%= f.email_field :email %>
.
.
.
希望这也能解决别人的问题!
谢谢!
答案 1 :(得分:0)
这个问题已经回答了,但我想我会把它作为别人的替代方案。表单支持对象可用于返回一种表单/一种模型类型的设置,并帮助保持代码清洁。
这是一篇很好的文章: http://pivotallabs.com/form-backing-objects-for-fun-and-profit/