白ヒゲさんののんびり blog

プログラミング初学者が書く。間違い探しブログです。勉強中はRuby on Railsです。

【rails】投稿記事につけたタグを編集する

皆さん今日わ白ヒゲさんです(*´∇`*)

 

今日は前回実装した投稿記事にタグを取り付ける機能の続編になります。

 

そうです!タグを追加したり編集したりするupdateですd(^_^o)

 

⭐︎前回までの設定してあることの復習⭐︎

・投稿記事はBlog,タグはTagテーブルで管理。

・中間テーブル(BlogTagsで多対多の関係を成立)。

・Formオブジェクトを使用して一括でcreate。

 

こんな感じですね(^-^)

 

それではupdateを作成していきましょう!!

 

・僕の考えた最強のupdate: 既存のTag,BlogTagを上書きして行う。

 

まぁ、基本だと思うんですがかなり難航しました...

 

↓↓そして今回出した結論はコチラ↓↓

 

・僕の作ったupdate: 既存のBlogを削除して作成し直す。

 

はい。ということで一度既存のものを削除しちゃうのでちょっとリスクが高いような気がしますが完成したものがこれになります(*´∇`*)

 

<blogs_controller>

f:id:t_custom8:20201112141313p:plain

内容的には簡単です。

@blogを削除してからFormオブジェクトを利用して@blogを作成し直します。

createアクションとdestroyアクションを同時に行う感じですねd(^_^o)

 

若干不安なのですが、これで今回は解決とします♪

 

どうしてもうまく行かなかった理想のupdateも載せますので何かご意見があれば教えていただけると幸いです( ;  ; )

 

<blogs_controller>

f:id:t_custom8:20201112141719p:plain

 

<blogs_controllerのprivate>

f:id:t_custom8:20201112141733p:plain

現在の@blogについているtagをpluckで取り出して新しいtagと置き換えます。

そしてnew_tag_arryという配列の中にtagをsplitメソッドで分解して代入します。

eachメソッドで@tagを生成してそれを中間テーブルに保存しようとしましたが@tags.idがついているはずなんですがidが定義されていないことになりました....

 

なので止むを得ず断念しましたが...なんだかスッキリしませんね。

また、進めて余裕がある時に改良していきたいと思います。

 

それでは、今回も最後まで見てくださった方々ありがとうございました!!