0

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

3 回答 3

1

默认为/controller/:id/edit,遵循 REST 架构。

你真的想改变这个吗?

如果是这样,请验证声明的顺序:

Rails 路由按照指定的顺序进行匹配,因此如果您在 get 'photos/poll' 上方有一个资源 :photos,则资源行的 show action 路由将在 get 行之前匹配。要解决此问题,请将 get 行移到资源行上方,以便首先匹配。

http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

rake routes并使用以下命令检查您的可用路线:

http://guides.rubyonrails.org/routing.html#inspecting-and-testing-routes

于 2012-10-05T07:50:32.967 回答
0

如果你把 match 而不是 '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) %>
于 2014-09-04T20:31:46.917 回答
-1

运行“rake routes”命令并检查“password_resets/edit/4RghIKJNygEDswIuuCo”的路由。

于 2012-10-05T06:02:20.633 回答