Помощь с Formtastic - PullRequest
       3

Помощь с Formtastic

0 голосов
/ 01 июля 2011

Прежде всего, я не являюсь носителем языка и только начал с рельсов три дня назад. Извините за мои ошибки. 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])

Ответы [ 2 ]

0 голосов
/ 01 июля 2011

В модели представления вы используете attr_accessible, он не будет сохранять поля, не входящие в attr_accessible, такие как receive_attributes, которые поступают из формы при отображении вложенной формы.Таким образом, вам нужно добавить receive_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 %>

<%конец%>

0 голосов
/ 01 июля 2011

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

...