如何通过控制器附加URL参数?

时间:2017-10-23 08:04:05

标签: ruby-on-rails applicationcontroller

在我的Rails应用中,我想将用户转发到个人登录页面,该内容存储在Cookie :user_subdomain中。因此,当用户转到www.app.com/sign_in时,他/她应自动转发到www.app.com/sign_in/mycompany

如何实现这一目标?

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

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

感谢您的任何指示。

# routes.rb:

get 'sign_in', :to => 'sessions#new'
 # sessions_controller.rb:

class SessionsController < ApplicationController

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

  ...

end

1 个答案:

答案 0 :(得分: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