2016-07-14 39 views
1

我試圖在Assignment/show.html.erb上使用link_to來創建出價。強烈的參數params.require link_to

的show.html.erb:

<%= link_to "Create Bid", bids_path(:status => "Pending", :assignment_id => @assignment.id, :user_id => current_user.id), :method => :post %> 

在bids_controller.rb這行代碼沒有工作:

params.require(:bid).permit(:status, :assignment_id, :user_id) 

我不得不將其更改爲以下得到它工作:

params.permit(:status, :assignment_id, :user_id) 

我真的不明白這個問題,但我認爲,如果我沒有包含params.require部分我的代碼將不會像未來的攻擊或問題那樣得到保護。

無論如何,我想包括params.require部分的代碼,我希望有人能夠指導我如何做到這一點。謝謝!

+0

你必須顯示整個代碼,包括你的relatoions - 如果assigment id和user id通過他們可能不需要的鏈接傳遞在許可證中。 – MageeWorld

+0

是的,我明白這一點。但我想知道正確的語法:) – Benjamin

回答

2

params.require(:出價).permit(:狀態,:assignment_id,:USER_ID)指通過在PARAMS將具有以下結構

bid: { 
    status: '', 
    assignment_id: 1, 
    user_id: 1 
} 

因此,構建一個符合一個的link_to標籤你可以嘗試下面的例子:

<%= link_to "Create Bid", bids_path(bid: {status: "Pending", assignment_id: @assignment.id, user_id:current_user.id}), :method => :post %> 
+0

我按照你的要求做了,它工作!但是,這行代碼現在不起作用: '如果Bid.exists?(user_id:params [:user_id],assignment_id:params [:assignment_id])' – Benjamin

+0

我可能知道您的代碼是什麼意思嗎?它是否像定義一個叫bid的對象? @KennyChan – Benjamin

+0

好吧我想我通過將代碼更改爲 '如果Bid.exists?(user_id:params [:bid] [:user_id],assignment_id:params [:bid] [:assignment_id])解決了這個問題' – Benjamin