首先,我不是以英语为母语的人,三天前才开始使用rails。为我的错误道歉。Formtastic快把我逼疯了。我有三个表: user,note,receiver:
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])发布于 2011-07-01 07:14:29
打印出参数:注意使用logger.info并检查所有参数都是从表单传递的,您是否还可以尝试将code reciever_ids code作为attr_accessible添加到Note模型中
发布于 2011-07-01 09:48:16
在视图模型中,您使用的是attr_accessible,它不会保存任何不在attr_accessible中的字段,比如receives_attributes,当您显示嵌套表单时,这些字段来自表单。因此,您必须将receiver_attributes添加到attr_accessible list.You中,这可能需要对用户和接收者执行此操作(如果您对它们也有嵌套表单),这两个用户和接收者也具有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 %><%结束%>
https://stackoverflow.com/questions/6541836
复制相似问题