Rails:多模型表单不会将数据写入模型

时间:2012-10-19 16:16:20

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

好的,这让我绕过弯道。我有三个模型[与这个问题相关]:Outfit,Outfit_relationship和Answer。装备是父母模型,其他人是孩子。 Outfit模型如下所示:

class Outfit < ActiveRecord::Base
  attr_accessible :user_id, :outfit_origin_id, :outfit_parent_id, :outfitrelationship_id #review before going live
  attr_accessible :item_id, :image_size_height, :image_size_width, :image_x_coord, :image_y_coord, :zindex, :outfit_id
  attr_accessible :description, :question_id, :user_id, :outfit_id

  has_many :answers
  has_many :outfit_relationships

  accepts_nested_attributes_for :outfit_relationships, :allow_destroy => :true
  accepts_nested_attributes_for :answers

请注意,第二个和第三个attr_accessible是从其他模型访问属性。我不确定这是绝对必要的,一些文章说它是,有些人说它不是,所以我把它放进去。

我为这些数据创建了一个多模型表单,我想用一个按钮发布。这是代码:

<%= form_for(@outfit) do |post_outfit| %>

  <%= post_outfit.fields_for @outfit.outfit_relationships do |build| %>
    <table>
     <tr>
        <td>X Coord <%= build.text_area :image_x_coord, :size => '1x1' %></td>
        <td>Y Coord <%= build.text_area :image_y_coord, :size => '1x1' %></td>
        <td>Z Index <%= build.text_area :zindex, :size => '1x1' %></td>
        <td>Height <%= build.text_area :image_size_height, :size => '1x1' %></td>
        <td>Weight <%= build.text_area :image_size_width, :size => '1x1' %></td>
     </tr>
    </table>
  <% end %>

  <%= post_outfit.fields_for @outfit.answers do |build| %></br></br>
    <%= image_tag current_user.fbprofileimage, :size => "40x40" %></br>
    <%= current_user.name %></br>
    Comment: <%= build.text_area :description, :size => '10x10' %>
  <% end %>

  <%= post_outfit.fields_for @outfit do |build| %> </br>
   origin id: <%= build.text_area :outfit_origin_id, :size => '1x1' %></br>
   parent id:  <%= build.text_area :outfit_parent_id, :size => '1x1' %></br>
  <% end %>     

  <div id="ss_QID_actions_container">
    <%= post_outfit.submit "Submit checked", :class => "btn btn-small btn-primary" %>
  </div>
<% end %>

以下是装备控制器的相关内容:

def new 
    @outfit = Outfit.new
    @outfit.save
    @outfit.answers.build
    @outfit.outfit_relationships.build

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @outfit }
    end
  end

def create
@outfit = Outfit.new(params[:id])
@comment = @outfit.answers.create(params[:answer])
@outfitrelationship = @outfit.outfit_relationships.create(params[:outfit_relationship])
redirect_to outfit_path(@outfit)

所以问题是除了ID之外没有任何内容写入我的数据库。我敢肯定我在这里傻了,但无法弄明白为什么。

0 个答案:

没有答案