【问题标题】:create new object in rails3 using multimodel form使用多模型形式在 rails3 中创建新对象
【发布时间】:2012-08-23 08:34:09
【问题描述】:

就 Rails 而言,我是 n00b。我正在尝试在我的第一个 rails3 项目中创建一个单一的多模型表单。详情如下:

class Item < ActiveRecord::Base
  # attr_accessible :title, :body
  has_many :item_reviews, :dependent => :destroy
  accepts_nested_attributes_for :item_reviews
end

class ItemReview < ActiveRecord::Base
  # attr_accessible :title, :body
  belongs_to :item
end

很清楚,一个项目可以有多个评论,但是当我创建一个项目时,我希望它至少有 1 个评论。所以我想在创建项目时以单一形式获取项目和第一次审查。

我正在使用以下视图:

<%provide(:title,'Create')%>
<h1> Add an Item review</h1>

<div class="row">
  <div class="span6 offset3">
    <%= form_for (@item) do |f| %>

      <%= f.label :name %>
      <%= f.text_field :name %>

      <% f.fields_for :item_reviews, @item.item_reviews do |ff| %>
        <%= ff.label :shop_address %>
        <%= ff.text_field :shop_address %>
      <% end %>

      <%= f.submit "Submit", class: "btn btn-large btn-primary" %>

    <% end %>

  </div>
</div>

&lt;% f.fields_for :item_reviews, @item.item_reviews do |ff| %&gt; 将不起作用,因为当前没有与 @item 关联的 item_review (@item = Item.new) 在我保存 @item 之前,我无法创建新的 item_review。在这种情况下我该怎么办。

我知道一种可能性是独立于模型的形式,但我不能使用上面的东西来简化生活。

PS:我正在使用引导程序,以防万一。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.2 multi-model-forms


    【解决方案1】:

    有一些方法可以实现带有项目评论的实例。关键是用一些嵌套实例创建一个实例而不实际保存

    @item = Item.new
    @item.item_reviews.build
    

    然后在你的表单中

    form_for @item do |f|
    ...
      f.fields_for :item_reviews do |ff|
    

    使用此代码,存在审查实例,您可以呈现表单

    【讨论】:

    • 是的!我同意存在审查实例,但仍未呈现。
    • 我自己搞定了 :-> 因为 item_reviews 是一个数组,这就是问题所在。使用 stackoverflow.com/questions/8271940/… 中的建议修复它
    猜你喜欢
    • 2014-12-22
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多