Rails - 在模型函数中将数组作为参数传递

时间:2015-07-12 09:11:40

标签: ruby-on-rails ruby-on-rails-4

for_tag有两个属性,1::level_id 2::title。 用户输入的值均为:title,输入值为

  

数学,英语,ETC   并将其拆分为数组

@test = params.requrie(:service).permit(:title)[:title]

我需要使用相同的:level_id

创建输入数据库
title:math,level_id:1
title:English,level_id:1

在我的服务控制器中尝试此操作。

def create
    @qure = params.require(:service).permit(:level_id)[:level_id]
    @test = params.require(:service).permit(:title)[:title]
    @gain = @test.split(",")

    @gain.each do |fil|
      Service.new(fil,@qure)
    end

    redirect_to root_url
  end

这给了我一个错误

  

分配属性时,必须将哈希作为参数传递。

我的迁移

def change
    create_table :services do |t|
      t.string :title
      t.integer :level_id

      t.timestamps null: false
    end
  end

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

@test = params.require(:service).permit(:title)[:title]

def create
  @qure = params.require(:service).permit(:level_id)[:level_id]
  @test = params.require(:service).permit(:title)[:title]
  @gain = @test.split(",")

  # Note: You need to use a hash to pass args to the model
  @gain.each do |fil|
    Service.create!(title: fil, level_id: @qure)
  end

  redirect_to root_url
end

我也用过创造!在方法中,如果要使用验证,则应考虑使用保存并检查返回值。如果存在验证问题,上述内容将引发错误。