Rails有一种收集所有路线的方法

时间:2015-04-25 16:37:02

标签: ruby-on-rails ruby routes

我以此为例: https://github.com/toshimaru/Rails-4-Twitter-Clone

路径文件如下所示:

Rails.application.routes.draw do
  root 'static_pages#home'

  resources :users do
    member do
      get :following, :followers
    end
  end
  resources :sessions,      only: [:new, :create, :destroy]
  resources :tweets,        only: [:index, :create, :destroy]
  resources :relationships, only: [:create, :destroy]

  get    'signup'   => 'users#new'
  get    'signin'   => 'sessions#new'
  delete 'signout'  => 'sessions#destroy'
  get    'about'    => 'static_pages#about'

  match '*path' => 'application#routing_error', via: :all
end

似乎在某些控制器中有评论提及它使用的路由,但是它没有在路由文件中指定。例如:

 # GET /users
  def index
    @users = User.all
  end

  # GET /users/1
  def show
    @tweet = current_user.tweets.build if signed_in?
    @feed_items = @user.tweets.paginate(page: params[:page])
  end

(在users_controller.rb

我的问题是,rails app如何知道这里有端点?我想知道我是否可以在一个文件中实际收集所有路由?

我打算做的是,我想用所有路由替换当前的routes.rb文件。

2 个答案:

答案 0 :(得分:2)

resources :users已自动为您创建了所有RESTful路由,但您可以将其限制为仅限某些路由(例如,会话,推文和关系)。

您可以在项目的根目录中看到控制台中的所有路线rake routes

请参阅此处获取解释......

http://guides.rubyonrails.org/routing.html#listing-existing-routes

您可以在应用程序中访问rake routes的输出....

output = `rake routes`

(注意上面使用反引号)

答案 1 :(得分:2)

在路线文件中指定

何时写下

resources :users

它为指定的资源创建CRUD路由,即索引,新建,创建,显示,编辑,更新,销毁资源的路由,在这种情况下,资源是user。 您可以通过

查看用户的所有路线
rake routes | grep 'users'

并列出申请中的所有路线

rake routes