【问题标题】:How to append URL param through controller?如何通过控制器附加 URL 参数?
【发布时间】:2017-10-23 08:04:05
【问题描述】:

在我的 Rails 应用程序中,我想将我的用户转发到他们的个人登录页面,该页面存储在 cookie :user_subdomain 中。所以当用户转到www.app.com/sign_in时,他/她应该会自动转发到www.app.com/sign_in/mycompany

如何做到这一点?

我想保留我的 sign_in_path 辅助方法,因为它遍布我的应用程序。

如果我只是使用redirect_to sign_in_path(:name => cookies[:user_subdomain]) redirect new 操作,我最终会陷入循环。

感谢任何指点。


# routes.rb:

get 'sign_in', :to => 'sessions#new'

 # sessions_controller.rb:

class SessionsController < ApplicationController

  def new
    params[:name] ||= cookies[:user_subdomain]
  end

  ...

end

【问题讨论】:

  • 您需要旧的www.app.com/sign_in 还是新的登录方式?
  • @Nermin:只是新方法。

标签: ruby-on-rails applicationcontroller


【解决方案1】:

那么解决方法很简单。您不需要重定向,您只需要路由的可选参数。

bound parameters

# routes.rb:

get 'sign_in(/:company_name)', :to => 'sessions#new'
# This will allow
# /sign_in
# and
# /sign_in/mycompany
# Both will lead to same action and you can keep your helper



# sessions_controller.rb:

class SessionsController < ApplicationController

  def new
    params[:company_name] ||= cookies[:user_subdomain]
    # You logic here
  end

...

end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多