【问题标题】:Rails creating two model in one formRails 以一种形式创建两个模型
【发布时间】:2013-03-10 07:40:46
【问题描述】:

您好,我正在尝试以一种形式从不同模型创建两个对象。它们通过 has_many/belongs_to 关系连接。事件 has_many 图片是多态的,因为可以与其他模型相关联。我得到 Can't mass-assign protected attributes: picture 如果我在 attr_accesible 中设置 :picture 它说我“未知属性:图片”。

这是我的表单代码:

    <%= form_for @event, :html => { :class => 'form-horizontal' } do |f| %>
  <div class="control-group">
    <%= f.label :titre, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_field :titre, :class => 'text_field' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :Date, :class => 'control-label' %>
    <div class="controls">
      <%= f.date_select :dday, :class => 'date_select', :start_year=>Date.today.year, :end_year=>1905 %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :lieux, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_field :lieux, :class => 'text_field' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :description, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_area :commentaire, :class => 'text_area', :rows => 4 %>
    </div>
  </div>
  <%= f.fields_for @event.pictures.new do |p| %>
    <%= p.text_field :name, :placeholder=>"Nom de votre image" %>
    <%= p.file_field :image %>
  <% end %>

和我的模型代码

 class Event < ActiveRecord::Base
  attr_accessible :dday, :lieux, :titre, :commentaire, :picture
    belongs_to :user
    has_many :pictures, :as => :imegeable ,:dependent => :destroy
    default_scope :order => :dday
    validates :dday, :titre, :presence=>true
end

感谢您的帮助。

【问题讨论】:

    标签: ruby-on-rails forms


    【解决方案1】:

    我已经有一段时间没有做任何 Rails 工作了,所以自从我上次做之后这可能已经改变了,但我认为你需要在你的事件模型上指定 accepts_nested_attributes_for :pictures

    【讨论】:

    • 当我这样做时,我收到一个新错误“找不到名称‘图片’的关联。它已经定义了吗?”
    • 修正了一个错字:pictures,而不是picture
    • 对不起,我不明白你的意思?
    • 我原来的回答是accepts_nested_attributes_for :picture。我将其更改为accepts_nested_attributes_for :pictures。试试accepts_nested_attributes_for :pictures
    • 我再次收到无法批量分配的问题
    【解决方案2】:

    尝试将代码中的最后一个 fields_for 更改为:

    <%= f.fields_for :pictures do |p| %>
      <%= p.text_field :name, :placeholder=>"Nom de votre image" %>
      <%= p.file_field :image %>
    <% end %>
    

    添加到您的模型中:

    accepts_nested_attributes_for :pictures
    

    并将模型中的 attr_accessible 更改为:

    attr_accessible :dday, :lieux, :titre, :commentaire, :pictures_attributes
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 2018-10-21
      • 1970-01-01
      • 2021-12-26
      相关资源
      最近更新 更多