目标
当用户提交设计“编辑注册”表单时,我想重定向到用户#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?
答案 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