没有从url获取[:id]参数,默认路由不起作用

时间:2012-06-14 05:14:52

标签: 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 '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

3 个答案:

答案 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”的路由。