1

我在 RAILS 中有一个应用程序,它由一组 API、一个基本网站和一个管理仪表板组成。对于 API 路由,我没有问题,因为它们属于模型和控制器,并且符合 RAILS RESTful 模式(每个模型一个控制器,每个 HTTP 方法一个方法)。

我不习惯为网站编写路由和控制器。主网站在 / 所以默认路由是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"

所以对于仪表板,我有一个巨大的dashboard_controller,它包含def method每个仪表板页面。IE:

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

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

仪表板的控制器位于 /controller 但对于视图和资产,我已将其放入 /folder/dashboard/

这里有2个问题:

  • 建立主页和仪表板的最佳方式是什么?我应该每页有一个控制器还是一个全局控制器,每页有一个方法?(我觉得很方便,代码更少)。
  • 我应该如何组织我的路线以避免为每个页面设置一个获取“某物/某物”?或者我为每个页面定义了一个路由是正常的 RAILS 吗?我还算新。

编辑:为了澄清,仪表板是围绕现有应用程序构建的,其 API 遵循 RESTFul Rails 模式:

  resources :users
  resources :routes

但是仪表板不绑定到任何现有资源,它只对这些资源进行统计。

4

3 回答 3

1

如果您有自定义控制器操作名称,那么是的,您需要定义每个路由。如果您使用 Restful 路由,那么您可以轻松地将它们定义为

resources :users

它将自动为操作创建路由:索引、显示、编辑、更新、创建和销毁。

这可能会有所帮助: http: //guides.rubyonrails.org/routing.html

对于您的仪表板,它可能汇集了大量资源,因此它们可能是自定义方法。我建议专注于通过单个资源构建您的应用程序。然后,一旦你定义了它们,构建你的仪表板。

于 2012-11-08T16:41:13.810 回答
0

如果您还没有,请查看本指南;

我认为您还没有接受 Rails 的 MVC 概念。

例如,假设您有“用户”。app 目录下应该有 users_controller.rb、users.rb(模型)、/views/users(视图)。

users_controller 包含索引、显示、创建等默认操作和您的自定义操作,如统计信息

user.rb 包含实例/静态/辅助方法

/views/users/ 包含与控制器中的操作相对应的模板。

于 2012-11-08T16:41:31.940 回答
0

我同意其他人在这里所说的一切。您绝对应该尝试更加 RESTful 并创建更多这样的路由:

 resources :users

但是,通常有一个不是 RESTful 的控制器(通常称为 pages 或 static),它为诸如PrivacyAbout Us等页面提供服务。对于这些路由,我通常这样做:

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