Rails 4 - 多态关联 - 未在表单中显示的嵌套属性

时间:2014-09-05 04:11:51

标签: ruby-on-rails nested-attributes polymorphic-associations

我正在构建一个登录系统,在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

1 个答案:

答案 0 :(得分:4)

你不应该在fields_for上有=吗? http://rubydoc.info/docs/rails/ActionView/Helpers/FormHelper:fields_for

E.G。

<%= f.fields_for @buyer.user do |u| %>