嵌套属性不从其父

时间:2017-05-03 23:51:34

标签: ruby-on-rails nested model-associations

由于2个脚手架,我创建了一个投资组合,一个用于投资组合本身,另一个用于图像,由carrierwave上传

这不是我第一次这样做,但这是我第一次遇到这个问题:

def create
    @multifichier = Multifichier.new(multifichier_params)

    respond_to do |format|
      if @multifichier.save
        if params[:fichiers]
          params[:fichiers].each { |f|
            @multifichier.fichiers.create(titre: f)
            # tried with some random strings, no difference
          }

          # abort @multifichier.fichiers.inspect
          end
        format.html { redirect_to @multifichier, notice: 'Multifichier was successfully created.' }
        format.json { render :show, status: :created, location: @multifichier }
      else
        format.html { render :new }
        format.json { render json: @multifichier.errors, status: :unprocessable_entity }
      end
    end
  end

如果我在循环中检查@multifichier.fichiers一次,我会得到以下内容 <ActiveRecord::Associations::CollectionProxy [#<Fichier id: 34, titre: nil, created_at: "2017-05-03 23:38:34", updated_at: "2017-05-03 23:38:34", multifichier_id: 3>。正如您所看到的那样,titre给出了&#39; nil&#39;,但multifichier_id获得了属性,我无法理解为什么。

以下是我的模特:

fichier.rb     类Fichier&lt; ApplicationRecord       belongs_to:multifile,optional:true #I想逐个上传图片       mount_uploader:titre,FichierUploader     端

multifichier.rb

class Multifichier < ApplicationRecord
  has_many :fichiers
  accepts_nested_attributes_for :fichiers
end

我错过了什么?这也是我第一次使用带有JSON的脚手架,但我不相信这是相关的。

提前感谢您,请询问您是否需要查看其他内容!

编辑1

我在阅读你的答案时意识到,我并没有告诉你我如何设置我的参数。我还用一个参数创建了另一个脚手架,但我仍然无法使其工作

def multifichier_params
  params.require(:multifichier).permit(:titre, :fichiers => [:titre])
end

再一次,当我还有另外3个projects完美地工作时,我不明白为什么这不起作用

0 个答案:

没有答案