【问题标题】:How to develop rails app for shopify with ScriptTags如何使用 ScriptTags 为 shopify 开发 Rails 应用程序
【发布时间】:2012-08-09 19:09:35
【问题描述】:

我在 Heroku 中部署了一个使用 Rails 开发的 shopify 应用程序。 我需要从任何 shopify 商店的前端调用一个 javascript 函数。 我看过这篇文章(http://www.shopify.com/technology/3033852-shopify-api-update-scripttags-javascript-insertion),但我没看懂……

我必须把这段代码放在哪里:

HTTP POST http://their-shop.myshopify.com/admin/scripttags

  <?xml version="1.0" encoding="UTF-8"?>
  <script-tag>
    <src>http://example.com/your-awesome-script.js</src>
    <event>onload</event>
  </script-tag>

src 标签应该是什么(对于我部署的 rails 应用程序), 我应该把javascript调用函数放在哪里?

【问题讨论】:

    标签: javascript ruby-on-rails frontend shopify


    【解决方案1】:

    这可能会有所帮助。

    Shopify Rails App

    您只需对用户进行身份验证,然后您需要获取从 Shopify 生成的令牌并将其保存在您的数据库中。 稍后再做:

    ShopifyAPI::Base.site = token
    

    然后使用以下命令安装脚本:

    s = ShopifyAPI::ScriptTag.create(:events => "onload",:src => "your javascript url")
    

    你就完成了!

    【讨论】:

    • 如果您需要在订单成功页面上执行 JS,请确保将源设置为“//your_javascript_url”。
    • 好的,谢谢您的回答!我今天试试看。
    • 你能给我一个“你的javascript url”的例子吗?我是这样做的 s = ShopifyAPI::ScriptTag.create(:events => "onload",:src => "//javascripts/shopify-try.js"),我把它放到 assets/javascripts/shopify-try .js (在 rails 目录中),我总是得到 URI::BadURIError (两个 URI 都是相对的)错误。我试过这样:api.heroku.com/myapps/csiga-second-shopify/javascripts/…,但我得到了同样的错误。
    • javascript url 需要是可以在运行时访问 js 的公共 url。例如:如果您尝试插入 jQuery,您的 url 可能是 https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
    • 这是我来自控制器的代码:sess = ShopifyAPI::Session.new(params['shop'],response['credentials']['token']) ShopifyAPI::Base.activate_session( sess) ShopifyAPI::ScriptTag.create(:event => "onload",:src => "javascript.dataglobe.eu/index.js") 这是一个公共 url,但我收到此错误:失败。响应代码 = 403。响应消息 = 禁止。为什么会被禁止?
    【解决方案2】:

    这是我为使其正常工作所做的:

    在位于 app > controllers 的 sessions_controller.rb 文件中

    之后

    def show
      if response = request.env['omniauth.auth']
        sess = ShopifyAPI::Session.new(params[:shop], response[:credentials][:token])
        session[:shopify] = sess
    

    我加了

    ShopifyAPI::Base.activate_session(sess)
    ShopifyAPI::ScriptTag.create(:event => "onload", :src => "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js")
    

    您需要将上面代码中的https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js替换为您的绝对js文件路径。

    然后在位于 config > initializers 中的 omniauth.rb 文件中 确保将 write_script_tags 添加到范围,即

    :scope => 'write_script_tags',
    

    您可能还需要重新启动 Rails 服务器并重新安装应用程序,以便授予这些权限。这应该可以解决问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多