見出し画像

Railsその他のアクションとは??

前回の記事でRails7つのアクションをアウトプットしました。
https://note.com/john01/n/nad30a560cb52

indexは一覧表示、newは新規作成ページというのは分かった。
では投稿完了ページや削除確認ページ等はどうやって表現したらいいのか…
ECサイトをチームで開発中にそんな疑問にぶち当たりました。
当初の自分の考えでは、そのページのcontrollerを量産して
indexアクション作ればよくね??でした。
実際に自分の個人アプリはindexしか入っていないcontrollerがたくさんあります💦
この方法でもリンク跳ばせて、思い通りのページが作成できますが
あまりに可読性が悪く、管理も大変です。
ググってみると、一つのcontrollerに自分で命名したアクションを作って
そこに対応するViewを作る方法を発見しました。

自分で命名したアクションの設定

まず前提として、posts_controllerを作っていて
index,showなどの7つのアクションを設定して基本的なブログサイトを作っているとします。
ここで作成者紹介ページを作ろうと思いました。

--../controllers/posts_controller

def author
end

この記述をすることでauthor.html.hamlを作成することができます。

Views/posts/author.html.haml

この中に作成者の紹介文でも入れておけばビューは完成です。

パスの指定方法(collection)

次はリンクを設定したいのでパスを指定します。

config/routes.rb

resources :posts do
collection do
     get 'author'
   end
 end

resourcesの後に何も記述しなければ全てのアクションが読み込まれますが
それは7つのアクションのみです。
自分で命名したアクションは別途記述してあげる必要があります。
これでrails routesをみてみると

スクリーンショット 2020-06-18 8.34.34

このように7つのアクション+authorアクションが追加されています。
ちなみにですがターミナルでみると見にくいので
僕はサーバーを立ち上げた後に
http://localhost:3000/rails/info/routes
これでパスを確認しています。
毎回コマンドを入力する手間も省け、見やすいので重宝しています。

memberの使い方

collectionではページを表示させるだけでしたが
memberを使うことでidを指定することができます。

config/routes.rb

resources :posts do
member do
     get 'author'
   end
 end

スクリーンショット 2020-06-18 8.39.39

先ほどのcollectionと違い、/postsの後に :idが入っています。
これで特定のデータに対してアクションが取れるようになりました。

使ってみた感想

rails学び始めたときは、制約が多くて覚えることが多いなーという
印象でしたが、いろいろ覚えていくうちに自分の知識量不足だと
気付きました。
プログラミングは学べば学ぶほど自分の想像したことが出来るようになるので、本当に面白いと思います。
挑戦する意欲と自走する努力を続けて世の中に必要とされるサービスを
生み出せるように頑張っていきます!!

ここまで読んでいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?