Rails - param is missing or the value is empty: エラー
param is missing or the value is empty:
以下のようなviewとコントローラ(Strong Parameters)を書いていたところ、POST時にparam is missing or the value is empty: article というエラーが発生しました。コードの趣旨としては、articleモデルの属性であるtitle, contentをコントローラにPOSTしたい、といったものです。
view
<%= form_with url: '/admin/articles', local: true do |f| %>
<%= f.label :title, 'タイトル' %>
<%= f.text_field :title %>
<%= f.rich_text_area :content %>
<%= f.submit '投稿する' %>
<% end %>
コントローラ
private
def article_params
params.require(:article).permit(:title, :content)
end
原因と解決策
param is missing or the value is empty: article の内容そのままですが、articleなんていうparamはないよ or 値がないよ、といっています。
今回は前者で、form_withにarticleモデルを関連づけていなかったことが原因でした。なので、以下のようにviewのform_withにarticleモデルを関連づけると解決します。
view
# mode: Article.newを追加
<%= form_with model: Article.new, url: '/admin/articles', local: true do |f| %>
<%= f.label :title, 'タイトル' %>
<%= f.text_field :title %>
<%= f.rich_text_area :content %>
<%= f.submit '投稿する' %>
<% end %>
もしくは、viewを返すコントローラ内で@article = Article.newを追加し、
<%= form_with model: @article, ... %> としても動きます。