Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails嵌套表单:更新创建多个记录_Ruby On Rails_Ruby On Rails 4_Paperclip_Nested Forms - Fatal编程技术网

Ruby on rails Rails嵌套表单:更新创建多个记录

Ruby on rails Rails嵌套表单:更新创建多个记录,ruby-on-rails,ruby-on-rails-4,paperclip,nested-forms,Ruby On Rails,Ruby On Rails 4,Paperclip,Nested Forms,我有菜单模型和照片模型,其中菜单与照片有很多关系。对于图片上传,我用的是回形针。我能够构建一个嵌套的表单,在照片表中创建照片和其他属性。但是,当我更新时,照片表中的记录会重复,更新表单中选择的新照片将不会上载。谢谢你的帮助 菜单模型 class Menu < ActiveRecord::Base has_many :photos, :dependent => :destroy accepts_nested_attributes_for :photos, reject_if:

我有菜单模型和照片模型,其中菜单与照片有很多关系。对于图片上传,我用的是回形针。我能够构建一个嵌套的表单,在照片表中创建照片和其他属性。但是,当我更新时,照片表中的记录会重复,更新表单中选择的新照片将不会上载。谢谢你的帮助

菜单模型

class Menu < ActiveRecord::Base
  has_many :photos, :dependent => :destroy
  accepts_nested_attributes_for :photos, reject_if: :all_blank, allow_destroy: true
end
_photo_field.html.haml

= simple_form_for @menu do |f|
  = f.simple_fields_for :photos do |photo|
    = render 'photo_fields', f: photo
.nested-fields
  = f.file_field :image
  = f.input :main_flag, as: :hidden, input_html: { value: "true" }
  = f.input :user_id, as: :hidden, input_html: { value: "1"}
菜单\u controller.rb

class MenusController < ApplicationController
  ...
  def update
    @menu = Menu.find(params[:id])

    if @menu.update(menu_params)
      if params[:image]
        @menu.photos.destroy
        @menu.photos.build(menu_params)
      end
      flash[:success]= 'Menu was successfully updated'
      redirect_to brand_menus_path(@menu.brand_id)
    else
      render 'index'
    end
  end

  private
  def menu_params
    params.require(:menu).permit(:name, :price, :brand_id, :category_id, :description,
      photos_attributes: [:user_id, :image, :main_flag])
  end
class MenusController
当与
嵌套参数一起使用时,这是
强参数的常见问题白名单照片属性
中的
:id
应该可以解决您的问题

def menu_params
  params.require(:menu).permit(:name, :price, :brand_id, :category_id, :description,
  photos_attributes: [ :id, :user_id, :image, :main_flag])
end

当我打开这个问题时,我第一次注意到-
@menu.photos.destroy
,我必须说这不仅不起作用,还会引发异常。谢谢!我删除了代码,效果很好。
def menu_params
  params.require(:menu).permit(:name, :price, :brand_id, :category_id, :description,
  photos_attributes: [ :id, :user_id, :image, :main_flag])
end