質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1532閲覧

Railsのコントローラとアクションについて

sprite

総合スコア63

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2016/01/05 06:02

お世話になっております

日記(daily)URLの下に、カテゴリを作りたいと思います。
ex:アニメ、マンガ、小説
これらのカテゴリのViewは全て共通しています。
違いはDBから取ってくるデータが異なります。

また、カテゴリのView以下では前月・当月・来月と
月をまたげるようにしています。

日記 | | | |

アニメ マンガ 小説
前月/当月/来月 前月/当月/来月 前月/当月/来月

URL: 日記/カテゴリ/月
という画面遷移図になっています。

カテゴリ毎にコントローラを作ったほうがいいのか、
日記コントローラでカテゴリ別のアクションを作ったほうがいいのか

どちらがいいか悩んでいます
ご教授をよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pi-chan

2016/01/05 07:45

イメージが沸かないので質問させてください。カテゴリが変わると、具体的に何が変わるのでしょうか?見た目ですか?表示されるデータの中身ですか?それともページ(挙動を含む)がガラリと変わって全く異なるサイトのようになってしまうのでしょうか?
sprite

2016/01/05 08:25

説明不足で申し訳ございません。 カテゴリが変わると、表示されるデータの中身です ページの構成は同じサイトです
guest

回答1

0

ベストアンサー

自分は素人なので、あまり断定的な事は言えませんが・・・

違いはDBから取ってくるデータ

という事であれば、異なったアプローチの方がメンテナンスし易いアプリケーションになるのではないでしょうか。

###1. コントローラについて
コントローラは文字通りの中央司令塔なので、一つであるべきです。

コントローラの役割は、受け取ったリクエスト(=URL)に応じて、後段のモデルビューの挙動をコントロールする事ですが、そのコントローラが複数有るとすれば、それをリクエストに応じて呼び分けるのは誰なのでしょうか?
その様な構成にすればコントローラ本来の役割を放棄し他に任せているだけで、イタズラに複雑化させるだけだと思います。

コントローラがすべき事は、ただ単にリクエストのパターンからカテゴリその他の情報を抽出し、パラメータ化して後段の処理を担当するモジュールへ受け渡すだけです。

###2. カテゴリ別のアクションについて
もしカテゴリ別のアクションをコントローラ内に実装しなければならないとすると、カテゴリが増える度にコントローラを修正しテストしてリリースしなければなりません!

そんなの実際的では無いですよね?

###3. おすすめの構成
どんな場合にも適しているとは言えませんが・・・

比較的に単純な構成のサイトならば、モジュール自体は極力シンプルで分岐の少ない構造とした方が、実装もテストもメンテナンスも楽です。

そして、リクエストとカテゴリ等のパラメータの対応関係(マッピング情報)は、極力ネーミングルールに基づく規約か、規約だけで対応し難ければプロパティファイル化された対応表で表すようにするのが良いです。

テーブルの設計をキチンと実施すれば、ほんの数個のパラメータだけで必要な情報にアクセス出来るはずなので、複雑なロジックを組む必要性はなく、カテゴリの追加・変更にも、プロパティの数行を差し替えるだけで対応出来るようになります。

見た目やちょっとした挙動の変化を付けたい場合にも、CSSやJavaScript等を適切に設計すれば、1、2個のパラメータで切り替え可能のはずです。

つまり、最終的に制作者の好みによるところが大きいとは言え、上手く設計すればかなりシンプルな構造で僅かなパラメータの差し替えにより、カテゴリの追加・変更に対応可能に出来ると思います。

投稿2016/01/05 11:02

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sprite

2016/01/06 02:06

とても丁寧な説明をありがとうございます。 今後のためにもコントローラはカテゴリ別に一つづつ作り、 中身はシンプルな構成にしたいと思います。 たびたび申し訳ございませんが、ひとつ質問があります。 上記の例で作った場合、カテゴリごとのビューは一つにまとめることは出来るでしょうか?
pi-chan

2016/01/06 12:20

ごめんなさい。説明が抽象的だったせいか、真意が伝わらなかった様です・・・ 後ほど回答欄に追記致しますので、ご参考になさってください。
sprite

2016/01/08 02:29

はい、お手数をお掛けしますが、どうぞよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問