Вставить более одного элемента из ассоциации own_to, используя вложенные формы - PullRequest
1 голос
/ 22 марта 2012

На моем пути к Rails я только что нашел другой вопрос к сообществу.

У меня есть следующий проект: у меня есть календарь, в котором отображаются события, которые любой клиент имел дело с моей компанией.Если я хочу вставить новое событие только с одним клиентом, у меня нет проблем, но если я хочу вставить новое событие с более чем одним клиентом, у меня возникает проблема.

Но вставить было невозможноболее одного клиента одновременно.Я знаю, что с этой конфигурацией Rails принимает только одного клиента для каждого экземпляра события, и одним из решений может быть изменение модели ассоциации между Event и Client, но для меня это не имеет смысла (события has_many клиентов и события client_to клиента ...звучит странно).Итак, этот пост связан с опциями компиляции от сообщества.

Это мой код (я использую гем nested_form от Райана Бейтса [github.com/ryanb/nested_form.git]):

ОБНОВЛЕНИЕ: На данный момент я представляю новую группу моделей следующим образом:

models / group.rb

class Group < ActiveRecord::Base
  has_many :clients
  has_many :events

  accepts_nested_attributes_for :clients
  accepts_nested_attributes_for :events

  attr_accessible :events_attributes, :clients_attributes
end

models / client.rb

class Client < ActiveRecord::Base
  has_many :events
  belongs_to :group

  accepts_nested_attributes_for :events
  accepts_nested_attributes_for :group, :update_only => true

  attr_accessible :name, :surname, :email, :group_attributes, :events_attributes
end

models / event.rb

class Event < ActiveRecord::Base
  belongs_to :group

  accepts_nested_attributes_for :group, :update_only => true

  attr_accessible :title, :group_id, :starts_at, :ends_at, :group_attributes
end

views / events / _form.html.erb

<%= simple_nested_form_for @event do |f| %>
  <%= f.input :title %>
  <%= f.fields_for :group do |group_form| %>
    <%= group_form.fields_for :clients do |client_form| %>
      <%= client_form.input :name %>
      <%= client_form.input :surname %>
      <%= client_form.input :email, :as => :email %>
      <%= client_form.link_to_remove "Remove this client" %>
    <% end %>
<%= group_form.link_to_add "Add another client", :clients %>
  <% end %>
  <%= f.input :starts_at, :as => :datetime %>
  <%= f.input :ends_at, :as => :datetime %>
  <%= f.button :submit %>
<% end %>

Но знаете, моя проблема заключается в том, что при создании события дляодна группа, эта группа успешно создается, когда я вставляю ТОЛЬКО ОДИН клиент.Когда я пытаюсь вставить двух или более клиентов, я получаю следующее:

ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes: new_1332430522879):
  app/controllers/events_controller.rb:44:in `new'
  app/controllers/events_controller.rb:44:in `create'

Ах!И я забыл прокомментировать ранее (но я думаю, что это не имеет отношения к этому), что я использую Ruby 1.9.3-p125 и Rails 3.2.2

Есть идеи?

Спасибозаранее ...

Фончо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...