[英]Param is missing or the value is empty - validations are sent in request
我有一個名為Wish的模型:
class Wish < ApplicationRecord
belongs_to :user
has_one :global_product
validates :global_product_id, presence: true
validates :user_id, presence: true
end
以下是願望路線:
user_wishes GET /users/:user_id/wishes(.:format) wishes#index
POST /users/:user_id/wishes(.:format) wishes#create
new_user_wish GET /users/:user_id/wishes/new(.:format) wishes#new
edit_user_wish GET /users/:user_id/wishes/:id/edit(.:format) wishes#edit
user_wish GET /users/:user_id/wishes/:id(.:format) wishes#show
PATCH /users/:user_id/wishes/:id(.:format) wishes#update
PUT /users/:user_id/wishes/:id(.:format) wishes#update
DELETE /users/:user_id/wishes/:id(.:format) wishes#destroy
用戶創建global_product之后,他們將被定向到其顯示頁面。 從那里我創建了一個按鈕來創建一個願望。 Global_product_id是“願望”表上的外鍵,因此他們從global_product中創建了一個願望。
基於路由,我認為所需的參數是user_id和global_product_id:
<%= link_to 'Add this product to my wish list', user_wishes_path(:global_product_id => @global_product.id,
:user_id => current_user.id),
:method=> :post,
class: "btn btn-default" %>
在wish控制器中,這是create方法和wish_params:
def create
@wish = Wish.new(wish_params)
@wish.save
if @wish.save
redirect_to 'index'
else
render 'new'
end
end
def wish_params
params.require(:wish).permit(:global_product_id, :user_id)
end
這是我上次請求中的確切錯誤:
Parameters: {"authenticity_token"=>"y1vzGG5+CoyGS4XAFJ6sQPlD5XyNRfSMA14r4lWsUh3N1FA8Uz/Q7HNUMWOpsPQyBILgpjVxJCM552757yNsjw==", "global_product_id"=>"25", "user_id"=>"1"}
Completed 400 Bad Request in 1ms (ActiveRecord: 0.0ms)
我不確定此請求出了什么問題,因為在Rails控制台中,我可以使用Wish.create(user_id:1,global_product_id:25)創建一個新的願望。 我曾嘗試將wish和global_product傳遞到我的link_to請求中,但存在相同的錯誤,並且看起來我不需要這些錯誤。 所需的只是user_id和global_product_id,它們在失敗的請求中。
您將參數發送為:
{"global_product_id"=>"25", "user_id"=>"1"}
而您的代碼:
params.require(:wish).permit(:user_id, :global_product_id)
期望它是:
{"wish" => {"global_product_id"=>"25", "user_id"=>"1"}}
因此,您需要修復wish_params
方法或link_to
調用以進行匹配。
您可以將link_to
為:
<%= link_to 'Add this product to my wish list',
user_wishes_path(user_id: current_user.id,
wish: {
global_product_id: @global_product.id,
user_id: current_user.id
}),
method: :post,
class: "btn btn-default" %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.