错误设置user_root for devise redirect

时间:2011-05-18 16:56:30

标签: ruby-on-rails routing devise

目标
当用户提交设计“编辑注册”表单时,我想重定向到用户#show而不是网站的根目录。

问题
遵循Devise的instructions并没有奏效。我不想自定义Devise控制器,所以我留下了对routes.rb的两个建议修改,

devise_for :users do
  get 'users', :to => 'users#show', :as => :user_root
end

match 'user_root' => 'users#show'

在提交修改表单后,第一个重定向到http://localhost:3000/users,第二个重定向到http://localhost:3000/user_root。两者都给出了相同的错误,“无法找到没有ID的用户”。

我的用户#show页面通常在应用程序中运行,所以它不是控制器方法(或视图,当然)的错误。这似乎是一个路由错误。我的routes.rb文件中有“resources:users”,没有关于用户的其他内容。如果我需要提供更多信息,请告诉我们!

问题
为什么不在URL中传递用户ID?

2 个答案:

答案 0 :(得分:2)

您是否考虑过将该行动作为会员行动?这将确保url格式是控制器//动作。我不知道你是否甚至可以在设计路线定义中使用成员的东西,但这就是我开始的地方。

devise_for :users do
  member do
      get 'users', :to => 'users#show', :as => :user_root
  end
end

答案 1 :(得分:2)

会员部分不起作用但如果你把它拿出来它对我有用。 +1到jaydel足够接近:P

devise_for :users do
  get 'users', :to => 'users#show', :as => :user_root
end

我尝试过的另一件事也是:

  devise_scope :user do
    get 'users' => 'users#show', :as => :user_root
  end