贝茨'嵌套资源的nested_form不能正确命名新字段

时间:2015-04-19 08:11:22

标签: ruby-on-rails nested-form-for

我正在构建一个stackoverflow克隆,并试图在问答创建上实现多个文件上传。

我正在使用带有nested_form gem的carrierwave。

问题创建上的文件上传工作正常,但我无法使其适用于答案。 这是我的新答案形式:

= nested_form_for [@question, @answer], remote: true do |f|
    = render 'shared/error_messages', object: f.object
    div.form-group
      = f.label :body
      = f.text_area :body, class: 'form-control'
    div.form-group
      = f.fields_for :attachments do |field|
        = field.label :file
        = field.file_field :file
        = field.link_to_remove "Remove this attachment"
      p
        = f.link_to_add "Moar files!", :attachments
    div.form-group
      = f.submit 'Post answer', class: 'btn btn-primary'

当我尝试上传单个文件时,它可以正常工作。嵌套file_field的名称如下:

name="answer[attachments_attributes][0][file]"

但是当我点击“Moar files”并出现另一个文件字段时,它恰好被命名为

name="question[attachments_attributes][1429430703012][file]"

因此,在参考文献中,我得到的第二个文件与问题相关,而不是答案。由于请求由answers_controller处理,因此第二个文件被忽略。

如何正确地将nested_form_for命名为新字段?

UPD

所以我试图明确说明附件的父对象,如下所示:

= f.fields_for :attachments, @answer.attachments do |field|

仍然没有运气

1 个答案:

答案 0 :(得分:0)

原来这是nested_form的一个老问题,当它在页面上被多次使用时,对于具有相同多态关联的两个不同对象。

此处data-blueprint-id conflict on Nested form for polymorphic associations是描述同一问题的另一个问题。 希望它会帮助别人。