Rails Cocoon Gem - 双嵌套资源

时间:2015-11-13 03:18:35

标签: ruby-on-rails ruby ruby-on-rails-4 nested-resources cocoon-gem

我有Article,其嵌套资源为Image GalleryImage Gallery的嵌套资源为Image Gallery Image。我为Articles设置了我的参数:

params.require(:article).permit(
    :featured_image, :title, :description, :department_id, :order_number,
    image_galleries_attributes: [:id, :order_number, :_destroy,
        image_gallery_images_attributes: [:id, :order_number, :caption, :_destroy]
    ]
)

我目前正在使用Cocoon Gem - 并尝试在表单输入中使用双嵌套资源,如下所示:

= f.fields_for :image_galleries do |gallery|
  %h4 Image Gallery
  = gallery.input :order_number, placeholder: "1"
  = link_to_remove_association "Remove", gallery, class: "btn-remove"

  = gallery.simple_fields_for :image_gallery_images do |image|
    = render 'image_gallery_image_fields', image: image

  = link_to_add_association 'add', gallery, :image_gallery_images

_image_gallery_image_fields.html.haml

= image.input :order_number
= link_to_remove_association "Remove", image

即使将局部变量传递给渲染视图,我仍然会收到以下错误:

undefined local variable or method `image'

使用嵌套资源时,是否需要以不同方式传递变量?或者是否有任何理由需要以不同的方式使用自动使用的模板(_image_gallery_image_fields.html.haml)?

感谢您提供任何帮助!

更新

在文章控制器中创建方法。

def create
    @article = @issue.articles.create(article_params)
    @article.user_id = current_user.id if current_user
    @article.save
    if @article.save
        flash[:notice] = "Article was successfully created"
        redirect_to edit_admin_issue_article_path(@issue, @article)
    else
        render 'new'
    end
end

1 个答案:

答案 0 :(得分:0)

我认为您需要在允许的参数上放置一个名为image的字段。该字段将具有数据库中图像的路径。你用什么来上传图片?