【问题标题】:error setting user_root for devise redirect为设计重定向设置 user_root 时出错
【发布时间】:2011-05-18 16:56:29
【问题描述】:

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

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

问题
为什么没有在 url 中传递用户 id?

【问题讨论】:

    标签: ruby-on-rails routing devise


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的建议,不幸的是它不起作用。尝试启动服务器时出现命令行错误:“无法使用资源范围之外的成员 (ArgumentError)”。
    • 啊,这真是太糟糕了。我应该在建议之前尝试一下,我很抱歉。
    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      • 2016-10-06
      • 2012-01-18
      相关资源
      最近更新 更多