Akh*_*hil 14 routes ruby-on-rails custom-routes ruby-on-rails-3
在我的rails应用程序中跟随routes.rb
resources :users
Run Code Online (Sandbox Code Playgroud)
导致'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
Run Code Online (Sandbox Code Playgroud)
&follow在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]
Run Code Online (Sandbox Code Playgroud)
导致'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
Run Code Online (Sandbox Code Playgroud)
为什么第二种情况没有路径名?比如第一种情况('new_user','edit_user')
有没有办法让第二种情况的路径名?因为我想在我的视图中使用这些路径名称
mea*_*gar 37
没有路径名,因为您没有指定路径名.如果您要提供自定义路由而不是使用resources,则需要使用:as提供路径名:
match '/new_user' => 'home#new_user', via: :get, as: :new_user
Run Code Online (Sandbox Code Playgroud)
您还应该使用get而不是match... via: :get:
get '/new_user' => 'home#new_user', as: :new_user
Run Code Online (Sandbox Code Playgroud)
但是,根据您的路线集,您最好的选择是继续使用resources,但通过以下方式提供有限的操作列表:only和自定义控制器:controller:
resources :users, only: %w(new edit show create), controller: "home"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10907 次 |
| 最近记录: |