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, ... %> としても動きます。