#問題箇所のコード
controller.rb
def create
@collect = Collect.create(collect_params)
if @collect.save
redirect_to "/group/show/#{@collect.group_id}"
else
render "new"
end
end
(省略)
private
def collect_params
params.require(:collect).permit(:url, :group_id)
end
主にcollect_paramsが悪いはず。
#param is missing or the value is empty:
意味は単純にparamsが存在しないか空ですとなる。
パラメータを確認するとこんな感じ。ちゃんと情報渡せてるように見えるけどfalseになってる。
<ActionController::Parameters {"authenticity_token"=>"Ze5qfbN7z11+vpQ0BRGuCOV8U6m9e/aH6B7QuXFkJ13sXD66fpls3yxpB8fxymNI3XqOR6KiBmemdPRC++aVTw==", "url"=>"https://(省略)", "group_id"=>"5", "commit"=>"Save ", "controller"=>"collect", "action"=>"create"} permitted: false>
#原因
params.require(:collect)
の部分が不要なんだと思う。
(もともとCollectテーブルに保存されるものとして送信されているのに、params.require(:collect)
と書くとだぶるのかなあ)
#解決
controller.rb
private
def collect_params
params.permit(:url, :group_id)
end
params.require(:collect)
を削除した。参考は下記のURL