【问题标题】:Rails 4 - Polymorphic Association - Nested Attributes not showing in formRails 4 - 多态关联 - 嵌套属性未显示在表单中
【发布时间】:2014-09-05 04:11:50
【问题描述】:

我正在 Rails 4.0.4 中构建一个有两个用户(买家和卖家)的登录系统。

对于身份验证,我使用的是 Devise gem:https://github.com/plataformatec/devise

要创建一个新的买家,我使用路由买家/新。但是,用户的字段不会显示在视图中。我还使用调试在视图中显示 @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

【问题讨论】:

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


    【解决方案1】:

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

    例如

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

    【讨论】:

    • 好的,谢谢。我已经研究了一个多小时,最后决定问。我什至从未注意到它丢失了。但这是有道理的,因为 Rails 正在控制台中运行它的魔力。大声笑
    • 它在控制台中工作,因为那是返回值。然而,没有什么告诉 ERB 在没有外部 = 的情况下打印输出。不过没问题,我也遇到了同样的问题:D
    猜你喜欢
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多