グループ編集機能の落とし穴

皆さんこんばんは、ハマッキーです。

昨日は家の中を掃除していたらNintendo Switchを発掘してしまい、ついそちらに夢中になった結果日記を書くのを忘れてしまいました。

最近少し弛んでるなと自分でもわかるので、ここらへんで気を引き締めていきたいところ。

 

さて、今日は「Chat Spaceのグループ編集機能を追加しよう」というカリキュラムを進めていく上で、「これ絶対皆ここでエラーおきるやろ!」って私が思った部分があったので、そのことについてお話していければなと思います。

私より先に進んでらっしゃる方は「そういえばあったわ」と共感する部分も少しはあるんじゃないかな〜と感じております。

 

それでは本題に行きます。

ここでの問題はグループの名前を編集できる機能を追加することなのですが、カリキュラムには、groups_controllerのupdateアクションに

def update  if @group.update(group_params)   redirect_to group_messages_path(@group), notice: 'グループを編集しました'  else   render :edit  end end
と記述するよう指示されているのですが、実際にこの通り記述して

f:id:hmakkey:20191115220915p:plain

名前を編集しようとする


グループの名前を編集して更新すると、

f:id:hmakkey:20191115215039p:plain

エラー

 

group_messages_path

この部分に心当たりがない、とrailsに説教されてしまいました。

きっと皆「カリキュラムのとおりに書いてんのになんでや!!

と思ったのではないでしょうか。

 

それもそのはずで、group_messages_pathこの先のカリキュラムでmessages_controllerで記述する部分になるので、

railsくん「まだ何も定義してないメソッドを実行しろとか言われましても^^;」

と言われるのはド正論なわけです。

 

じゃあどうやればグループ名編集できるの?って話だと思いますが、

結論:group_messages_pathの部分をroot_pathに置き換えるとうまくいきます。

 

f:id:hmakkey:20191115220200p:plain

編集成功

エラーの画面をリロードしたらこのように編集がうまくいきました。この理屈はprefixという部分の話になるので、気になる方は調べてみると良いかもしれません(TECH::EXPERTのカリキュラムだとpictweetmoooviのとこらへんにあった気がする)。

 

これはほんとに曲者だな〜と思ったグループ編集機能でした。

めちゃくちゃ雑に書いてて申し訳ないですが、これは是非フロント終わってこれからユーザー管理機能に行く人がいたなら是非とも見てほしいなと思います。

この日記を読んで少しでも役に立ったぜ!!って人がいたら嬉しい限りです。

それではまた次の日記でお会いしましょう!