简体   繁体   English

使用多模型形式在rails3中创建新对象

[英]create new object in rails3 using multimodel form

I am n00b as rails is concerned. 我是n00b,关于rails。 I am trying yo create a single multimodel form in my first rails3 project. 我正在尝试在我的第一个rails3项目中创建单个多模型表单。 Details are given below: 详细信息如下:

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

and

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

So as clear, an item can have multiple reviews but when I am creating an item, I want at least 1 review for it. 很明显,一个项目可以有多个评论,但是当我创建一个项目时,我想要至少一个评论。 So I want to get item and first review in single form while item creation. 因此,我想在创建项目时以单一形式获取项目并进行首次审阅。

I am using following view: 我正在使用以下视图:

<%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| %> <% f.fields_for :item_reviews, @item.item_reviews do |ff| %> will not work because there is not item_review associated with @item currently ( @item = Item.new ) Until I save @item, I can't create new item_review. <% f.fields_for :item_reviews, @item.item_reviews do |ff| %>将不起作用,因为当前没有与@item关联的item_review( @item = Item.new )在保存@item之前,我无法创建新的item_review。 What should I do in that case. 在那种情况下我该怎么办。

I know one possibility is model independent form but can't I use something above to make life easy. 我知道一种可能性是与模型无关的形式,但是我不能使用上面的东西来简化生活。

PS: I am using bootstrap, just in case if that helps. PS:我正在使用引导程序,以防万一。

There is some way to achieve an instance with item reviews. 有一些方法可以通过商品评论来实现实例。 The key is to create an instance with some of nested instances without actual saving 关键是创建一个带有一些嵌套实例的实例,而无需实际保存

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

and then in your form 然后以你的形式

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

with this code an instance of review is present and you can render form 使用此代码,可以查看一个实例,您可以呈现表单

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM