Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未从url获取[:id]参数,默认路由不起作用_Ruby On Rails_Ruby On Rails 3_Parameters_Routes_Url Parameters - Fatal编程技术网

Ruby on rails 未从url获取[:id]参数,默认路由不起作用

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

当我请求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

运行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。