Помогите с Формтастиком

Прежде всего, я не носитель языка и только три дня назад начал работать с рельсами. Извините за мои ошибки. Formtastic сводит меня с ума. У меня есть три таблицы: пользователь, заметка, получатель:

class User < ActiveRecord::Base
has_many :receivers
has_many :notes, :through => :receivers
attr_accessible :id, :email, :password, :password_confirmation, :remember_me

class Note < ActiveRecord::Base
has_many :receivers
has_many :users, :through => :receivers
attr_accessible :id, :text, :user_id
accepts_nested_attributes_for :receivers

class Receiver < ActiveRecord::Base
belongs_to :user
belongs_to :note
attr_accessible :user_id, :note_id, :note_attributes

accepts_nested_attributes_for :user
accepts_nested_attributes_for :note

А вот и моя форматная форма:

<%= semantic_form_for @note do |form| %>
<%= form.inputs do %>
  <%= form.input :text %>
  <%= form.input :user_id, :as => :check_boxes, :collection => User.find(:all, :conditions => ["id != ?", current_user.id], :order => 'id').collect{|u| [u.email, u.id]} %>
<% end %>
<%= form.buttons %>
<% end %>

Теперь я хочу создать новую заметку, которая может иметь несколько получателей. К сожалению, создается только заметка, но нет записей в таблице получателей, даже если я выбираю получателей. Может кто-то мне помочь, пожалуйста?

Вот мой notes_controller:

@note = Note.new(params[:note])

person jaegerschnitzel    schedule 30.06.2011    source источник
comment
Что вы имеете в виду, даже если я выбираю приемники.? --- Я не вижу записи для получателей в вашей форме   -  person Jesse Wolgamott    schedule 01.07.2011


Ответы (2)


Распечатайте params[:note] с помощью logger.info и проверьте, какие все параметры передаются из формы. Можете ли вы также попробовать добавить code reciever_ids code как attr_accessible в модели Note

person naren    schedule 30.06.2011

В модели представления вы используете attr_accessible, она не будет сохранять какие-либо поля, которых нет в attr_accessible, например, receive_attributes, которые поступают из формы при отображении вашей вложенной формы. Таким образом, вам нужно добавить Receiver_Attributes в список attr_accessible. Возможно, вы захотите сделать это для Пользователя и Получателя (если у вас также есть вложенные формы для них), которые также имеют attr_accessible

attr_accessible :id, :text, :user_id, :receiver_attributes

В новом действии notes_controller вам нужно использовать метод сборки, например

@note.build_receiver

затем в форме нужно написать код для отображения полей в приемнике.

<%= semantic_form_for @note do |form| %>
<%= form.inputs do %>
  <%= form.input :text %>
  <%= form.input :user_id, :as => :check_boxes, :collection => User.find(:all, :conditions => ["id != ?", current_user.id], :order => 'id').collect{|u| [u.email, u.id]} %>
<% end %>
  <%=f.semantic_fields_for :receiver_attributes, @note.receiver do|receiver| %>
   <!-- Add receiver related input here using the receiver block variable like receiver.input -->
  <% end %>
<%= form.buttons %>

‹% конец %>

person felix    schedule 01.07.2011