【Rails】ストロングパラメーターparam is missing or the value is empty:について
今回問題となる箇所
def create
customer = Customer.new(customer_params)
if customer.save
render json: { status: 'success11111', data: customer }
else
render json: { status: 'error', data: customer.errors }
end
end
private
def customer_params
params.require(:customer).permit(:name, :age, :sex, :memo)
end
です。
どういった問題かといいますと
param is missing or the value is empty:
パラメーターがないか、値が空であるといった内容でした。
今回の場合はapiの実装中ということで、Postmanを利用し、リクエストに対するレスポンスの確認を行っていました。
こんな感じです。
いろいろ調べてみた結果、
def create
customer = Customer.new(customer_params)
if customer.save
render json: { status: 'success11111', data: customer }
else
render json: { status: 'error', data: customer.errors }
end
end
private
def customer_params
params.permit(:name, :age, :sex, :memo)
end
require(:customer)
を消せばエラー無くレスポンスがかえってきました。
原因はおそらく
controller側で@customer = Customer.newやなどの書き忘れが原因なことが多いようです!
<%= form_with model: Customer.new do %>
あるいはcontroller側で@customer = Customer.newとして
<%= form_with model: @customer do %
とした場合、パラメータは
<ActionController::Parameters {(略),"url"=>"https://(略)", "customer"=>{"group_id"=>"5", "commit"=>"Save ", "controller"=>"customer"}, "action"=>"create"} permitted: true>
となり、ストロングパラメータは正常に実行されるはずです
今回の場合はPostmanにてリクエストを送信していて、
<%= form_with model: @customer, url: customers_path, method: :post do %>
といったようにviewファイルからモデルを指定して送られたリクエストではないため、param is missing or the value is empty:
が起きたと考えられます!
今回私はviewファイルを作成していない段階の事例でしたが、最初にも記述しましたがこのエラーに関しての多くは@customer = Custome.new
などの書き忘れが原因なことが多かったり、複数形のスペルミスだったりするようなので、チェックしてみてください!
Author And Source
この問題について(【Rails】ストロングパラメーターparam is missing or the value is empty:について), 我々は、より多くの情報をここで見つけました https://qiita.com/yuukinakamura0925/items/276eae8394efbd5da719著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .