2

私はRubyonRailsを初めて使用しますが、MVCロジックに自信がありません。

私はこのように進んでいます:

  • 私はモデル「ユーザー」を持っています
  • 私のコントローラーでは、というインスタンス変数を設定しました@users = User.all
  • 私の見解では、私は次のように私のロジックを実装します:<%= @users.each ... %>

私は、コントローラーのステップをバイパスして、これを自分のビューに書き込むことができるかどうかを自問していました。<%= User.all.each ... %>

プロジェクトでグッドプラクティスを使用したいのですが、2番目の方法は受け入れられますか?

4

4 に答える 4

1

コントローラーでの実際の操作では、たとえばUser.all.eachよりも複雑です。

@cars = Car.scoped
@cars = @cars.includes(:body_type, :brand, :city, :drive, :engine_type, :model, :region, :transmission)
@cars = @cars.select(['`cars`.*','`stats`.recount']).joins('left outer join stats on (cars.model_id = stats.model_id and cars.year = stats.year)')
@cars = @cars.limit(15)

およびモードおよびその他のロジック

ビューでは、このオブジェクトをレンダリングするだけで済みます
。私の例では、ビューで部分的にレンダリングを使用します。

= render @cars

およびview/_car.html.haml

- for car in @cars
  .row-fluid.car
    = car.price
    = etc

したがって、ビューを変更したい
場合はビューを変更します収集プロセスの動作を変更したい
場合はコントローラーを変更しますオブジェクトの動作を変更したい場合はモデルを変更します

バグのあるものは
すべて厳密な順序で同じもの
が順序は良くて美しい

于 2012-06-28T08:25:53.347 に答える
0

技術的には、ユーザーモデルは単なるRubyクラスであり、ビューからアクセスできます。ただし、これは間違いなく良い習慣ではありません。

なぜこれを行うべきではないのかについて詳しく話すのではなく、いくつかの記事/ドキュメントにリンクして、Railsに進む前に、まずMVCアーキテクチャの背後にある理由をよく理解するようにアドバイスします。

于 2012-06-28T08:12:20.380 に答える
0

コントローラーアクション内からのみActiveRecordのクエリインターフェイスと対話するという考え方は、保守性です。このアプローチに従うと、アプリケーションのコントローラーを調べることで、アプリケーションが何をすべきかを大まかに知ることができます。また、ロジックがより複雑になる場合(たとえば、認証や承認を追加する場合)、その動作はコントローラーに入ります。

対照的に、ビューの1つを見ると、ページがどのように見えるかが明確になっているはずです。いたるところにモデルクラスへの呼び出しがある場合、これはそれほど明白ではありません。

おそらく、あなたはそれを次のように考えることができます:

  • モデル:ビジネスロジックを提供するための複雑なクエリ、検証、コールバック
  • コントローラー:表示/作成/更新/など。そして誰がそれをすることが許されているのか。
  • 表示:私のページは視覚的にどのように見えますか

アプリの特定の側面を変更したい場合は、その側面を担当する再指定コンポーネントに触れるだけで済みます。

于 2012-06-28T08:12:51.697 に答える
0
  • モデル:あらゆる種類の論理分析とデータ維持を行うすべてのもの
  • コントローラー:要求を分析し、どのモデルがどのようにデータを要求するかを決定する必要があります(すべてのデータ?1つのフィールドのみ?...また:私は管理者かどうか?)
  • ビュー:コントローラーから取得したデータの視覚的表現

そうです、すべてを表示するように移動することは可能ですが(データベース要求も)、それは良い考えではありません。理想的には、コントローラーに移動する必要があります。

于 2012-06-28T08:25:06.340 に答える