Ruby on rails 未从url获取[:id]参数,默认路由不起作用
当我请求URL时,如下所示: http://localhost:3000/password_resets/edit/4RghIKJNygEDswIuuCo 我没有得到[:id]参数,即4RghIKJNygEDswIuuCo 这是我的路线文件,需要修改吗Ruby on rails 未从url获取[:id]参数,默认路由不起作用,ruby-on-rails,ruby-on-rails-3,parameters,routes,url-parameters,Ruby On Rails,Ruby On Rails 3,Parameters,Routes,Url Parameters,当我请求URL时,如下所示: http://localhost:3000/password_resets/edit/4RghIKJNygEDswIuuCo 我没有得到[:id]参数,即4RghIKJNygEDswIuuCo 这是我的路线文件,需要修改吗 ActionController::Routing::Routes.draw do |map| match 'primary', :to => 'pages#primary', :as => "primary" match
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
运行rake routes命令并检查密码重置/edit/4RghIKJNygEDswIuuCo的路由。默认为/controller/:id/edit,遵循REST架构 你真的想改变这个吗 如果是,请验证声明的顺序: Rails路由按照指定的顺序匹配,因此如果 有一个资源:照片上面有一个获取“照片/投票”的显示行动的 资源行的路由将在get行之前匹配。到 要解决此问题,请将get行移到resources行上方,以便 第一名 并使用rake routes命令检查可用的路由:
如果您放置match而不是get,您将获得所有http get、POST、put和DELETE路由谓词
get 'password_resets/:id/edit', to: 'password_reset#create', as: :send_password_reset
“to:”将控制器方法定义为:'定义路径名,'get'定义路由动词,':id'是由app/views/user\u mailer/password\u reset.text.erb中的此行创建的令牌
<%= send_password_reset_url(@user.password_reset_token) %>
当id作为纯数字的东西传入时是否有效?我模模糊糊地记得它有一些默认的假设,但我可能错了。给我看一下rake routes命令和相关控制器代码的结果。这是一个答案,还是一个对更多数据的请求?无论如何,rake路由的输出看起来更像密码_resets/edit/[:id]。如果设置了资源路由,它看起来可能更像密码重置/[:id]/edit。