Rails控制器和网站的路由配置

时间:2012-11-08 16:27:09

标签: ruby-on-rails ruby-on-rails-3 rails-routing

我在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

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

这是两个问题:

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

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

  resources :users
  resources :routes

但是仪表板不依赖于任何现有资源,它只会对这些资源进行统计。

3 个答案:

答案 0 :(得分:1)

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

resources :users

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

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

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

答案 1 :(得分:0)

如果你没有,请检查this guide;

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

例如,假设您有“用户”。你应该在app目录下有users_controller.rb,users.rb(model),/ views / users(view)。

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

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

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

答案 2 :(得分:0)

我同意其他人在这里所说的一切。你肯定应该尝试更多RESTful并创建更多这样的路线:

 resources :users

但是,通常有一个非RESTful控制器(通常称为页面或静态),它可以为PrivacyAbout Us等页面提供服务。对于这些路由,我通常会这样做:

['api', 'privacy', 'us'].each do |p|
  get p, :controller => 'pages', :action => p
 end