2015-07-12 117 views
0

for_tag有兩個屬性,1::level_id 2::title。 用戶正在進入這兩個值,但在:title,輸入值Rails - 將數組作爲參數傳遞給函數

數學,英語等 和我分成數組這是

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

我需要建立進入DB與相同: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 
+0

'@test = params.requrie(:service).permit(:title)[:title]'typo in require。你通常需要在'service_params'專用方法中使用強參數。 – Cyzanfar

+0

請參閱我對這裏的類似問題的回答:http://stackoverflow.com/questions/31365644/rails-actioncontrollerparameters-to-string/31365721#31365721 –

+0

你可以在這裏看到我的解決方案http://stackoverflow.com/questions/31365644/rails-actioncontrollerparameters-to-string/31365721?noredirect = 1#comment50714000_31365721 –

回答

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 

我也用創造!在該方法中,但如果要使用驗證,則應考慮使用保存並檢查返回值。如果存在驗證問題,上述操作將引發錯誤。

+0

它的工作是一個完美的答案,但爲什麼你使用CREATE!而不是新? – ijunaidfarooq

+0

新實際上並沒有保存到數據庫中。如果你使用新的,你還必須在以後調用保存。像:service = Service.new; service.save –

+0

太棒了,明白了 – ijunaidfarooq

相關問題