KJF*_*KJF 5 forms ruby-on-rails ruby-on-rails-3
我有一个无表格模型,我正在尝试生成一些表单字段.
表单看起来像这样:
= form_for :users, url: users_path do |f|
- books.each do |book|
= f.fields_for :books, book do |bf|
= bf.hidden_field :title, value: book.title
= f.submit "Send"
Run Code Online (Sandbox Code Playgroud)
我期望为每个字段生成的内容是这样的:
<input name="users[books][][title]" type="hidden" value="Some Book Title">
<input name="users[books][][title]" type="hidden" value="Some Book Title">
<input name="users[books][][title]" type="hidden" value="Some Book Title">
Run Code Online (Sandbox Code Playgroud)
但是,我实际得到的是
<input name="users[books][title]" type="hidden" value="Some Book Title">
<input name="users[books][title]" type="hidden" value="Some Book Title">
<input name="users[books][title]" type="hidden" value="Some Book Title">
Run Code Online (Sandbox Code Playgroud)
这意味着当提交表单时,只有最后一个输入字段可用,因为前两个字段已被覆盖,因为它们引用相同的内容.
当模型具有活动记录后端但不是无表格时,这可以正常工作.
有什么建议?
我认为您需要将此添加到您的用户模型中
def books_attributes= attributes
# do something with attributes
# probably:
# self.books = attributes.map{|k,v|Book.new(v)}
end
Run Code Online (Sandbox Code Playgroud)
并且还persisted?为Book实例定义方法.让它回归false.
并添加f你fields_for的观点:
= f.fields_for :books, book do |bf|
Run Code Online (Sandbox Code Playgroud)
我希望这会奏效.