0

我正在做一个图书管理员,所以每个用户都有自己的图书收藏。我所做的是这个

<%= 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

4

1 回答 1

0

我坚持如果我添加一个 attr_accessor,就没有必要在 attr_accessible 列表中添加它。现在我正在检索图书信息。

我在这里找到了提示

虚拟属性和批量分配

于 2012-10-03T07:08:20.807 回答