首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Formtastic帮助

Formtastic帮助
EN

Stack Overflow用户
提问于 2011-07-01 06:31:31
回答 2查看 301关注 0票数 0

首先,我不是以英语为母语的人,三天前才开始使用rails。为我的错误道歉。Formtastic快把我逼疯了。我有三个表: user,note,receiver:

代码语言:javascript
复制
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

下面是我的形式表:

代码语言:javascript
复制
<%= 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:

代码语言:javascript
复制
@note = Note.new(params[:note])
EN

回答 2

Stack Overflow用户

发布于 2011-07-01 07:14:29

打印出参数:注意使用logger.info并检查所有参数都是从表单传递的,您是否还可以尝试将code reciever_ids code作为attr_accessible添加到Note模型中

票数 0
EN

Stack Overflow用户

发布于 2011-07-01 09:48:16

在视图模型中,您使用的是attr_accessible,它不会保存任何不在attr_accessible中的字段,比如receives_attributes,当您显示嵌套表单时,这些字段来自表单。因此,您必须将receiver_attributes添加到attr_accessible list.You中,这可能需要对用户和接收者执行此操作(如果您对它们也有嵌套表单),这两个用户和接收者也具有attr_accessible

代码语言:javascript
复制
attr_accessible :id, :text, :user_id, :receiver_attributes

在notes_controller的新操作中,您需要使用像这样的构建方法

代码语言:javascript
复制
@note.build_receiver

然后,在表单中,您需要编写代码来显示接收器中的字段。

代码语言:javascript
复制
<%= 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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6541836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档