如何通过控制器附加 URL 参数?
How to append URL param through controller?
在我的 Rails 应用程序中,我想将我的用户转发到他们的个人 登录页面 ,该页面存储在 cookie :user_subdomain
中。因此,当用户转到 www.app.com/sign_in
时,s/he 应该自动转发到 www.app.com/sign_in/mycompany
。
如何实现?
我想保留我的 sign_in_path
辅助方法,因为它遍布我的应用程序。
如果我简单地 redirect
使用 redirect_to sign_in_path(:name => cookies[:user_subdomain])
的 new
操作,我将陷入循环。
感谢您的指点。
# routes.rb:
get 'sign_in', :to => 'sessions#new'
# sessions_controller.rb:
class SessionsController < ApplicationController
def new
params[:name] ||= cookies[:user_subdomain]
end
...
end
那么解决起来就很简单了。您不需要重定向,您只需要路由的可选参数。
# 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
在我的 Rails 应用程序中,我想将我的用户转发到他们的个人 登录页面 ,该页面存储在 cookie :user_subdomain
中。因此,当用户转到 www.app.com/sign_in
时,s/he 应该自动转发到 www.app.com/sign_in/mycompany
。
如何实现?
我想保留我的 sign_in_path
辅助方法,因为它遍布我的应用程序。
如果我简单地 redirect
使用 redirect_to sign_in_path(:name => cookies[:user_subdomain])
的 new
操作,我将陷入循环。
感谢您的指点。
# routes.rb:
get 'sign_in', :to => 'sessions#new'
# sessions_controller.rb:
class SessionsController < ApplicationController
def new
params[:name] ||= cookies[:user_subdomain]
end
...
end
那么解决起来就很简单了。您不需要重定向,您只需要路由的可选参数。
# 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