【问题标题】:Creating forms for Multiple Nested Resources in Rails 3在 Rails 3 中为多个嵌套资源创建表单
【发布时间】:2012-04-10 22:26:38
【问题描述】:

我一直在关注 Ryan Bates 的嵌套表单教程Railscast 196

新操作的表单显示测验的嵌套属性,但不显示键的嵌套属性。我猜这是因为测验有一个 has_many 关系,而 key 有一个 has_one 关系......但我不知道我做错了什么?

非常感谢任何帮助!

这是我的模型:

class Repository < ActiveRecord::Base
   has_many :quizzes, :dependent => :destroy
   has_one :key, :dependent => :destroy

   accepts_nested_attributes_for :key, :quizzes
end

这是我的控制器:

def new
  @repository = Repository.new
  3.times { @repository.quizzes.build }
  @repository.key = Key.new

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @repository }
  end
end

这是我的看法:

<div class="field">
  <%= f.label :wp_uid %><br />
  <%= f.text_field :wp_uid %>
<% f.fields_for :quizzes do |quiz_fields| %>
  <p>
    <%= quiz_fields.label :name, "Name" %><br />
    <%= quiz_fields.text_field :name %>
  </p>
<% end %>
<% f.fields_for :key do |key_fields| %>
  <div class="field">
  <%= key_fields.label :value, "Value" %><br />
  <%= key_fields.text_field :value %>
  </div>
  <div class="field">
  <%= key_fields.label :expiry, "Expiry" %><br />
  <%= key_fields.date_select :expiry %>
  </div>
<% end %>
</div>
<div class="actions">
  <%= f.submit %>
</div>
<% end %>

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    您应该尝试修改您的 fields_for 块以使用

    尝试更改为:

    <%= f.fields_for :key do |key_fields| %>
    

    railscast 可以在 Rails 3 更改为使用 而不是 之前进行。

    Ryan 有一个 nested_form gem,您可能会发现它对此也很有用。我还没有尝试使用它,但计划下次我开始一个新项目。

    https://github.com/ryanb/nested_form

    【讨论】:

      【解决方案2】:

      尝试将关键对象构建为

      @repositity.build_key

      来自 rails 文档 http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#label-Unsaved+objects+and+associations

      如果您希望将对象分配给 has_one 关联而不保存它,请使用 build_association 方法。被替换的对象仍将被保存以更新其外键。

      【讨论】:

      • 我也这样做了,但它并没有解决我的问题。不过谢谢:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多