0

レールが関係しているので、私は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>

<% f.fields_for :item_reviews, @item.item_reviews do |ff| %>現在に関連付けられているitem_reviewがないため機能しません@item@item = Item.new)@itemを保存するまで、新しいitem_reviewを作成できません。その場合はどうすればいいですか。

モデルに依存しない形式が1つの可能性であることは知っていますが、上記のようなものを使用して生活を楽にすることはできません。

PS:念のため、ブートストラップを使用しています。

4

1 に答える 1

1

アイテム レビューでインスタンスを達成する方法がいくつかあります。重要なのは、実際に保存せずに、ネストされたインスタンスのいくつかでインスタンスを作成することです

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

そしてあなたの形で

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

このコードでは、レビューのインスタンスが存在し、フォームをレンダリングできます

于 2012-08-23T08:42:38.433 に答える