Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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在创建新标签i haven';创建操作上的t id_Ruby On Rails_Select2 - Fatal编程技术网

Ruby on rails Rails在创建新标签i haven';创建操作上的t id

Ruby on rails Rails在创建新标签i haven';创建操作上的t id,ruby-on-rails,select2,Ruby On Rails,Select2,我使用选择2,希望创建新标签,然后保存它们 我有@cost的表格,要选择2这个 <%= f.collection_select :product_ids, Product.all,:id, :name ,{include_hidden: false},{ multiple: true} %> })) 以及用于保存新产品的控制器方法 def product_new product = Product.find_by(name:params[:product]) Pro

我使用
选择2
,希望创建新标签,然后保存它们

我有
@cost
的表格,要
选择2
这个

<%= f.collection_select :product_ids, Product.all,:id, :name ,{include_hidden: false},{ multiple: true} %>
}))

以及用于保存新产品的控制器方法

  def product_new
   product = Product.find_by(name:params[:product])
   Product.create(name:params[:product]) if !product
   render json: :ok
  end
成本创建
操作

   def create
    @cost = Cost.new(costs_params)
    if @cost.save
      flash[:notice] = t('added')
      if params[:add_more].present?
        redirect_back(fallback_location: root_path)
      else
        redirect_to @cost
      end
    else
      render action: 'edit'
    end
  end

   def costs_params
    params.require(:cost).permit(:day, :amount, :description, :source,:tag_list,:product_ids=>[])
  end
它工作正常,但当我想用这个新创建的产品保存@cost记录时,我只收到了我的标签名,没有id

例如,我有products
water=>id:1,beer=>id:2,并在db中创建新的juice标签
id:3

在创建时,使用参数“产品ID”=>[“1”、“2”、“juice”]


如何修复它?

您不应该使用id:product.term,
但是
id:product.id,

您不应该使用id:product.term,
但是
id:product.id,

您可以添加一些关于成本记录的信息吗?可能是成本控制者或要保存成本记录的操作?updated@CdotStrifeVII您可以添加一些关于成本记录的信息,可能是要保存成本记录的成本控制者或操作吗?updated@CdotStrifeVII
   def create
    @cost = Cost.new(costs_params)
    if @cost.save
      flash[:notice] = t('added')
      if params[:add_more].present?
        redirect_back(fallback_location: root_path)
      else
        redirect_to @cost
      end
    else
      render action: 'edit'
    end
  end

   def costs_params
    params.require(:cost).permit(:day, :amount, :description, :source,:tag_list,:product_ids=>[])
  end