在我的rails应用程序中跟随routes.rb
resources :users
导致'rake routes'的输出
users GET /users(.:format) users#index
POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
&安培;在routes.rb中跟随(对于我的自定义控制器'home')
match '/new_user' => 'home#new_user', via: [:get]
match '/users/:id/edit' => 'home#edit_user', via: [:get]
match '/users/:id' => 'home#show_user', via: [:get]
match '/users/:id' => 'home#create_user', via: [:post]
导致'rake routes'的输出
GET /new_user(.:format) home#new_user
GET /users/:id/edit(.:format) home#edit_user
GET /users/:id(.:format) home#show_user
POST /users/:id(.:format) home#create_user
为什么第二种情况没有路径名?比如第一种情况('new_user','edit_user')
有没有办法为第二种情况设置路径名?因为我想在我的观点中使用这些路径名称
答案 0 :(得分:37)
没有路径名,因为您没有指定路径名。如果您要提供自定义路线而不是resources
,则需要使用:as
来提供路径名:
match '/new_user' => 'home#new_user', via: :get, as: :new_user
您还应该使用get
代替match... via: :get
:
get '/new_user' => 'home#new_user', as: :new_user
但是,根据您的一组路线,最好的办法是继续使用resources
,但要通过:only
提供有限的操作列表,并通过:controller
提供自定义控制器:< / p>
resources :users, only: %w(new edit show create), controller: "home"