1

RAILS にアプリケーションがあります。これは、一連の API、基本的な Web サイト、および管理ダッシュボードで構成されています。API ルーティングについては、モデルとコントローラーに属し、RAILS RESTful パターン (モデルごとにコントローラー、HTTP メソッドごとにメソッド) に準拠しているため、問題はありません。

私が慣れていないのは、Web サイトのルートとコントローラーを作成することです。メインのウェブサイトは / にあるので、デフォルトのルートはroot :to => "home#index"で、次のようなウェブサイト ページのルートがあります。

 get "home/index"
  get "map/index"
  get "api/index"
  get "cgu/index"
  get "legal/index"

ビューごとにコントローラーがあり、ビューごとに get を定義する必要があるため、これは良くないと思います。ダッシュボードについては、別のアプローチを試しました。/dashboard にあります。デフォルトのルートは次のとおりです match "dashboard" => "dashboard#index"。例としていくつかのページを次に示します。

 get "dashboard/index"
  get "dashboard/users"
  get "dashboard/users_stats"
  get "dashboard/routes"
  get "dashboard/routes_stats"
  get "dashboard/charts"
  get "dashboard/financial"

def methodそのため、ダッシュボードには、各ダッシュボード ページ用の を含む大規模な dashboard_controller があります。いいえ:

#dashboard/users
  def users
     @users = User.all

     respond_to do |format|
      format.html {render :layout => 'dashboard'}
    end
  end

ダッシュボードのコントローラは /controller にありますが、ビューとアセットについては /folder/dashboard/ に配置しました

ここに2つの質問があります:

  • ホーム Web サイトとダッシュボードを構築する最良の方法は何ですか? ページごとにコントローラーを配置するか、ページごとにメソッドを配置するグローバルコントローラーを配置する必要がありますか? (これは非常に便利で、コードが少ないと思います)。
  • ページごとに get "something/something" を設定しないようにルートを整理するにはどうすればよいですか? それとも、ページごとに定義されたルートがあるのは RAILS では正常ですか? 私はかなり新しいです。

編集: 明確にするために、ダッシュボードは RESTFul Rails パターンに従う API を備えた既存のアプリケーションを中心に構築されています。

  resources :users
  resources :routes

ただし、ダッシュボードは既存のリソースに関連付けられておらず、それらのリソースに関する統計のみを行います。

4

3 に答える 3

1

カスタム コントローラー アクション名がある場合は、すべてのルートを定義する必要があります。Restful ルートを使用する場合は、次のように簡単に定義できます。

resources :users

これにより、アクションのルートが自動的に作成されます: index、show、edit、update、create、destroy。

これが役立つかもしれません: http://guides.rubyonrails.org/routing.html

おそらく多くのリソースを集めているダッシュボードの場合、それらはおそらくカスタムメソッドになります。個々のリソースごとにアプリを構築することに集中することをお勧めします。次に、それらをすべて定義したら、ダッシュボードを作成します。

于 2012-11-08T16:41:13.810 に答える
0

ここで他の人が言ったことすべてに同意します。間違いなくより RESTful になり、次のようなルートをさらに作成する必要があります。

 resources :users

ただし、通常、RESTful ではない (通常はページまたは静的と呼ばれる) コントローラーがありPrivacyAbout Us、 などのページを提供します。これらのルートについては、通常、次のようにします。

['api', 'privacy', 'us'].each do |p|
  get p, :controller => 'pages', :action => p
 end
于 2012-11-08T16:47:14.410 に答える
0

まだお持ちでない場合は、このガイドをご覧ください。

あなたは Rails の MVC の概念を受け入れていないと思います。

たとえば、「ユーザー」がいるとします。app ディレクトリの下に users_controller.rb、users.rb (モデル)、/views/users (ビュー) が必要です。

users_controller には、インデックス、表示、作成などのデフォルト アクションと、統計などのカスタム アクションが含まれています。

user.rb には、インスタンス/静的/ヘルパー メソッドが含まれています

/views/users/ には、コントローラーのアクションに対応するテンプレートが含まれています。

于 2012-11-08T16:41:31.940 に答える