🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

468閲覧

【Rails5】ActionController::ParameterMissingが表示される

odennkunn

総合スコア16

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

1クリップ

投稿2019/10/25 01:55

前提・実現したいこと

記事投稿アプリを作っています。記事を投稿する際にparamsの部分でうまく保存できず困っています。

発生している問題・エラーメッセージ

ActionController::ParameterMissing in ArticlesController param is missing or the value is empty: article

該当のソースコード

articles_controller

class ArticlesController < ApplicationController def index end def new @article = Article.new end def create @article = Article.new(article_params) if @article.save redirect_to :index else render action: :new end end private def article_params params.require(:article).permit(:title, :image, :text, :category).merge(user_id: current_user.id) end end

views/articles/new

<div class = "post-header"> <h1>LHS</h1> </div> <div class = "post-idea"> <i class="fas fa-pen-nib"></i> <h2>アイデア投稿</h2> </div> <div class = "postbox"> <div class = "postbox__card"> <%= form_tag('/articles', method: :post) do %> <h3>写真<span>※</span></h3> <label for = "postimage"> ファイルを選択 <input type="file" id="postimage" accept="image/*"> </label> <div class = "preview"> </div> <h3>タイトル<span>※</span></h3> <input placeholder = "記事のタイトル" type="text" name="title" class="post-input"> <h3>本文<span>※</span></h3> <textarea placeholder = "説明" name="text" cols="30" rows="5"></textarea> <h3>カテゴリ<span>※</span></h3> <select name="select-category"> <option value="cook">cook</option> <option value="clean">clean</option> <option value="beauty">beauty</option> <option value="other">other</option> </select> <input type="submit" value="送信" class="send"> <% end %> </div>

paramsの定義はしたのですが、なぜうまく保存できないのかがわかりません。

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

params.require(:article).permit(:title, :image, :text, :category)のように書くと、フォームのnameとして、article[title]article[image]のような形を取る必要がありますが、現状のフォームはそうなっていません。

フォームとコントローラーを適宜書き換えて、「フォームの生成する値」と「コントローラーの期待する値」を揃えてください。

投稿2019/10/25 02:38

maisumakun

総合スコア145975

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

odennkunn

2019/10/25 05:17

丁寧な回答ありがとうございます。ご指摘通り記述変更することで、先ほどのエラーは出なくなったのですが、imageだけが保存できません。 エラー文はActiveRecord::NotNullViolation  Mysql2::Error: Column 'image' cannot be null: INSERT INTO `articles` となっています。 imageに関してはnull false制約を使っており、imageがnullのためこのようなエラーが出るのでしょうか??
odennkunn

2019/10/25 05:33

form tag内に:multipart => trueの記述をしてみましたが、ダメでした
odennkunn

2019/10/25 06:08

申し訳ありません、ビューの部分を少し修正したらんできました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問