我正在做一种图书管理员,所以每个用户都有自己的图书集。我所做的就是这个
<%= simple_form_for @user_collection do |f|%>
<%= f.input :user%>
<%= f.input :collection_name%>
<%= f.simple_fields_for :collection_books do |builder|%>
<%= builder.input :book_name%>
<div class="author"><%= builder.input :author%></div>
<div class="year"><%= builder.input :year%></div>
<%end%>
<%end%>
我使用该视图将书籍与用户联系起来。
这里book_name输入是一个自动填充字段[1],用于搜索书名,当点击一本书时,作者和年份输入填充了我从搜索中获取的信息。
我也使用链接[2]来添加更多书籍。 我在这里展示的代码没有显示其他字段, 作为我的Collection模型中的一个例子,我有这个验证线
validates_presence_of :collection_name
所以如果我尝试保存没有collection_name的集合,它会按预期再次呈现该视图,但问题出现是因为我只是使用访问者属性来显示书籍信息,而不是因为我想保存它们
Collection.rb
attr_accessible :collection_books_attributes ... (and others)
has_many :collection_books
has_many :books, :through => :collection_books
accepts_nested_attributes_for :collection_books
CollectionBook.rb
attr_accessible :book_name
attr_accessor :author, :year
有没有办法将这些值存储在没有质量分配错误的参数中? 因为每次我尝试保存时,它们都包括我创建的那些访问器,以便在出现错误时显示作者和书的年份(如前所述)。
希望我的问题足够明确:)
提前致谢
哈维尔
[1] http://railscasts.com/episodes/102-auto-complete-association-revised [2] http://railscasts.com/episodes/196-nested-model-form-revised
答案 0 :(得分:0)
我认为如果我添加一个attr_accessor,就不需要在attr_accessible列表中添加它。现在我正在检索图书信息。
我在这里找到了一个提示