我正在构建一个登录系统,在Rails 4.0.4中有两个用户,买方和卖方。
对于auth,我使用的是Devise gem:https://github.com/plataformatec/devise
要创建新买家,请使用route buyer / new。但是,用户的字段不会显示在视图中。我还使用debug在视图中显示 @ buyer.user 并且已创建。但是当我打电话给 f.fields_for @ buyer.user do | u | 时,永远不会输入循环。
为什么会这样?此外,多态关联似乎在rails控制台中工作。
买方控制人:
# GET /buyers/new
def new
@buyer = Buyer.new
@buyer.build_user
end
买方模式
class Buyer < ActiveRecord::Base
has_one :user, as: :role
accepts_nested_attributes_for :user
end
买家/新视图
<%= form_for(@buyer) do |f| %>
....
<div class="field">
<%= debug(@buyer.user) %>
<% f.fields_for @buyer.user do |u| %>
<%= u.text_field :email %>
<% end %>
</div>
用户模型
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
belongs_to :role, polymorphic: true
答案 0 :(得分:4)
你不应该在fields_for上有=吗? http://rubydoc.info/docs/rails/ActionView/Helpers/FormHelper:fields_for
E.G。
<%= f.fields_for @buyer.user do |u| %>