Ruby on rails redirect_to到外部url调用该方法两次

时间:2016-12-03 14:30:31

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

我有一个视图,调用一个简单的控制器方法

<p><%= link_to "Log In external app", login_with_external_app_path %></p>

控制器执行:

  def login_with_external_app
    params = {secret_key: ENV['SECRET_APP_KEY'], scope: 'x:y' }
    uri = URI('https://an_app.com/login/oauth/authorize')
    uri.query = params.to_query
    redirect_to(uri.to_s)
  end

方法login_with_external_app被调用两次。第一个是当我点击我视图的按钮时,单击该段代码后正确执行它并没有正确地重定向到uri(控制台显示应用程序找到了URL),之后调用该方法再次,它重定向很好。

控制台记录:

  

开始GET&#34; / login_with_external_app&#34; for :: 1 at 2016-12-03 11:23:11   -0300由SessionsController#login_with_external_app作为HTML处理

     

重定向到   https://an_app.com/login/oauth/authorize?secret_key=123456&scope=x%3y   完成302发现于2824ms(ActiveRecord:0.0ms)

     

开始GET&#34; / login_with_external_app&#34; for :: 1 at 2016-12-03 11:23:15   -0300由SessionsController#login_with_external_app作为HTML处理

2 个答案:

答案 0 :(得分:0)

也许您可以透露更多信息,但是从这一点来看,您的方法似乎被调用了两次。你没有机会把这种方法放在before_action中,是吗?

答案 1 :(得分:0)

我有同样的问题,发现如果我使用帖子链接而不是它解决了问题。所以在上面的例子中使用:

<p><%= link_to "Log In external app", login_with_external_app_path, method: :post %></p>

然后记得改变路线从get到post。