我正在做一个图书管理员,所以每个用户都有自己的图书收藏。我所做的是这个
<%= 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 的情况下保存该集合,它会按预期再次呈现该视图,但问题来了,因为我只是使用访问器属性来显示书籍信息,而不是因为我想保存它们。
集合.rb
attr_accessible :collection_books_attributes ... (and others)
has_many :collection_books
has_many :books, :through => :collection_books
accepts_nested_attributes_for :collection_books
收藏书.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