【问题标题】:Redirect users#edit to /settings?将 users#edit 重定向到 /settings?
【发布时间】:2017-01-29 20:26:40
【问题描述】:

我希望 users#edit 操作始终显示为 /settings

在我的路线中

get "settings" => "users#edit", as: :settings

任何设置的链接都是这样的

<%= link_to "Settings", settings_path %>

但是当我访问example.com/username/edit时,它并没有重定向。

如何将其重定向到settings?这是一种不好的做法吗?

【问题讨论】:

    标签: ruby-on-rails routes ruby-on-rails-5


    【解决方案1】:

    我认为你的意思是这样做

    get '/username/edit', to: redirect('/settings')

    您在上面所做的就是试图让该 url 使用一种名为 editusers_controller 中,别名为 settings 用作链接中某处的 settings_path

    查看 Rails API 对这类问题总是有帮助的

    参考:http://guides.rubyonrails.org/routing.html#redirection

    【讨论】:

    • 不错的答案,但是如果从未使用过的路线,将其完全删除会更好吗?
    • 这也是正确的,但是,我不知道问题的确切情况,所以没有做出这个假设.. 但是如果你不打算使用这条路线,那就摆脱这是最好的行动方案
    【解决方案2】:

    通过定义一个新路由settings,您是在告诉Rails 将所有到达/settings 的GET 请求路由到users_controlleredit 方法。这并不意味着使用该控制器的所有请求都应该重定向到另一个路由 - 这里您刚刚定义了两个使用相同控制器方法的单独路由。

    如果你不想使用user/edit,那么我建议你删除路由。如果你目前有类似

    # config/routes.rb
    resources :users
    

    直接改成

    # config/routes.rb
    resources :users, except: [:edit]
    

    并继续使用您的 settings_path 助手。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 2018-12-31
      • 1970-01-01
      相关资源
      最近更新 更多