我是rails的新用户,因此理解routes.rb
的工作方式很复杂!所以我尝试修改一条路线,我得到了一条如下所示的路径:
user/:id/edit
但我希望ID不会出现在路径中。
我尝试使用这种方法:
get '/users/:id/edit', to: 'users#edit', as: 'users/edit'
但它什么都没改变。在我的routes.rb
我得到了:
resources :users, only: [:create, :new, :show, :edit]
有人知道怎么做吗?我已经看了this guide
答案 0 :(得分:2)
如果您已经查看过指南,请阅读singular resources?
有时,您拥有一个客户端始终无需查找的资源 引用ID。例如,您希望/ profile始终显示 当前登录用户的配置文件。 在这种情况下,您可以使用 一个奇异的资源来映射/配置文件(而不是/ profile /:id) 显示行动:
resource :geocoder
在您的应用程序中创建六个不同的路径,所有路径都映射到Geocoders控制器:
GET /geocoder/new geocoders#new return an HTML form for creating the geocoder
POST /geocoder geocoders#create create the new geocoder
GET /geocoder geocoders#show display the one and only geocoder resource
GET /geocoder/edit geocoders#edit return an HTML form for editing the geocoder
PATCH/PUT /geocoder geocoders#update update the one and only geocoder resource
DELETE /geocoder geocoders#destroy delete the geocoder resource
答案 1 :(得分:0)
如果你已经服用,
resources :users
现在更改此路线,
get '/users/edit', to: 'users#edit', as: 'users_edit'
现在,在您拥有edit link
的视图文件中,将链接更改为
<%= link_to 'Edit', users_edit_path(:id => user.id) %>
现在,这会链接到带有id parameter
的用户控制器的编辑操作。
现在,在用户控制器文件中,
class UsersController < ApplicationController
def edit
// params[:id] will be the ID that you sent through the view file.
@user = User.find(params[:id])
end
end
多数民众赞成,您完成了自定义路线,现在路线将是users/edit instead of users/:id/edit