当我按如下方式请求URL时:
http://localhost:3000/password_resets/edit/4RghIKJNygEDswIuuCo
我没有获得[:id]
参数,即 4RghIKJNygEDswIuuCo 。
这是我的路线文件,是否需要进行任何修改?
ActionController::Routing::Routes.draw do |map|
match 'primary', :to => 'pages#primary', :as => "primary"
match 'admins', :to => 'admin_users#list', :as => "admins"
match 'login', :to => 'user_sessions#new', :as => "login"
match 'logout', :to => 'user_sessions#destroy', :as => "logout"
root :to =>"public#index"
match 'HFA/:id/' => 'public#show'
match 'HFA/:id/:uid' =>'public#show'
match 'public/projectview/:projectid/' => 'public#projectview'
map.connect ':controller/:action/:id.:format'
map.connect ':controller/:action/:id'
resources :users
resources :usertypes
resources :user_sessions
end
答案 0 :(得分:1)
默认值为/controller/:id/edit
,遵循REST架构。
你真的想改变它吗?
如果是,请验证声明的顺序:
Rails路由按照指定的顺序进行匹配,所以如果你 有一个资源:照片上面的照片/民意调查'节目动作 资源行的路由将在获取行之前匹配。至 解决这个问题,将get行移到资源行上方,这样就可以了 首先匹配。
http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions
并使用rake routes
命令检查您的可用路由:
http://guides.rubyonrails.org/routing.html#inspecting-and-testing-routes
答案 1 :(得分:0)
如果你把匹配而不是' get'你将得到所有的http(GET,POST,PUT,DELETE)路线动词
get 'password_resets/:id/edit', to: 'password_reset#create', as: :send_password_reset
' to:'定义控制器方法,' as:'定义路径名称,' get'定义路线动词和':id'是app / views / user_mailer / password_reset.text.erb
中此行创建的令牌<%= send_password_reset_url(@user.password_reset_token) %>
答案 2 :(得分:-1)
运行“rake routes”命令并检查“password_resets / edit / 4RghIKJNygEDswIuuCo”的路由。