rails - 从嵌套属性中获取其他值

时间:2012-10-03 06:53:32

标签: ruby-on-rails ruby-on-rails-3 nested-attributes

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

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

1 个答案:

答案 0 :(得分:0)

我认为如果我添加一个attr_accessor,就不需要在attr_accessible列表中添加它。现在我正在检索图书信息。

我在这里找到了一个提示

Virtual attributes and mass-assignment