带有hello js的Rails,函数自动执行

时间:2015-11-25 19:14:41

标签: ruby-on-rails hello.js

我试图在我的rails应用程序中使用hello.js。我从官方网站下载hello.js,包括资产文件中的脚本。然后需要它我的app.js文件。

//= require users/hello.all
//= require users/hello_ini

hello_ini是我自己的文件(咖啡脚本)

html中的设置按钮如下

 <button class= 'btn btn-primary' id= 'backpass' onclick="hello.login('justickets')">SIGN UP / LOGIN</button>

我在hello.init.coffee中包含了两个我需要的方法。

hello.init({
  'jts': {
    id: 'jts',
    base: "https://xyz" + "/",
    oauth: {
      version: 2,
      auth: "https://xyz"  + '/dialog/authorize',
      response_type: 'token'
    },
    scope: {
      '*': '*'
    },
    get: {
      'me': 'api/me',
      'token': 'api/'
    }
  }
}, {oauth_proxy: false})




hello.on 'auth.login', (response) ->
  console.log "response"
  return unless response.authResponse and response.authResponse.access_token
  console.log "im here"

  hello('jtk').api('me').then (  userData) =>
    parsedUserData = {
      id: userData.user_id
      firstName: userData.name,
      token: response.authResponse.access_token
    }
    console.log parsedUserData

    #Sending request to login user in rails app
    $.ajax
        url: "/process_data"
        type: "POST"
        data: parsedUserData
        success: (resp) ->
          console.log("success")
          window.opener.location.reload(true);#not working
          window.close()
        # alert("done")

点击按钮后,应用程序正在打开。 但似乎即使我不点击,每次访问该页面时,该方法似乎都会自动运行。 另外,如何让原始窗口引用页面?

任何建议都会有所帮助,谢谢

1 个答案:

答案 0 :(得分:1)

将事件监听器绑定到登录事件,例如......

<button class= 'btn btn-primary' id= 'backpass' onclick="hello.login('justickets').then(justLoggedInHandler)">SIGN UP / LOGIN</button>

hello.on('auth.login', eventHandler)是非特定的,会在页面刷新时启动。