【転職177】本日やった事と感想+ストログパラメーターを思い出せ!

本日のタスク

【終わったタスク】12/21(月)

◆勉強

・Sinatra入門をすべて完了。

・下記記事を参考にしてrailsブログでarticlesテーブルにtagカラムを追加する。

 →:https://prog-8.com/rails5/study/7/3#

◆運動

無し。

◆その他

・12/22の予定を決める。

・転職ブログ更新。

・ダイエットブログ更新。

スポンサーリンク

【感想】

12/21

あれから色々とやって、知らない事がたくさんだったのでドットインストールにて復習実施。プロゲートだけでは説明が無かった部分も補完出来てきました。

現在、githubで見つけたrails 6.0を使ったブログで基本的な部分を作った後、新たにtagカラムを追加して、投稿時に一緒にタグも追加できるようにしたのですが、sqlite3上にカラムが出来て、form_withでもタグを送信できるフォームまで作ったのですが、実際に投稿してみるとタグが保存されず。

タグが保存されているかを、sqlite3にて.tablesでテーブルを確認し、articlesテーブルがあることを確認。続いて、select * from articles;で中身を見ると、タイトル(title)、本文(text)、作成日時(created_at)、アップデート日時(created_up)のみ登録されている様子。

コントローラー内のcreateにドットインストールのRuby on Railsの16のストログパラメーターにて、送信されている内容を確認する項目があり、下記を追記してみました。

def create

render plain: params[:article].inspect

# @article = Article.new(article_params)

# if @article.save

# redirect_to @article

# else

# render ‘new’

# end

end

そして投稿をしてみると、”<ActionController::Parameters {“title”=>”テスト08”, “text”=>”テスト08”, “tag”=>”test08”} permitted: false>”と表示されます。

フォームからはタイトル、本文、タグが送信されていることがわかりました。

ということは、受け取りが出来ていないのか?と思い色々調べますが、原因が分からず。

しばらく経ってから投稿されたログを見ていたところ、”Unpermitted parameter: :tag”の記述を発見。翻訳すると許可されていないとのこと。この内容をググってみている時にふと思い出し、そういえばコントローラのprivateに下記を記述していました。

private

def article_params

params.require(:article).permit(:title, :text)

end

なので、下記のように:tagを追加しました。

private

def article_params

params.require(:article).permit(:title, :text, :tag)

end

これで投稿して、tagも一緒に投稿することが出来るようになりました。