本日のタスク
【終わったタスク】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も一緒に投稿することが出来るようになりました。