【问题标题】:Ruby On Rails - I need a javascript file to pass though ruby when using require.jsRuby On Rails - 在使用 require.js 时,我需要一个 javascript 文件来通过 ruby
【发布时间】:2013-03-11 13:09:03
【问题描述】:

我是一名前端开发人员,并且是 Ruby on Rails 的新手,所以请忽略我缺乏命名约定等。

我正在开发的网站使用 RequireJS,并且我正在实施 Recurly 支付表单,我可以让除了签名之外的所有内容都正常工作。

问题是我由服务器生成的签名,因此它需要通过 Ruby 来获取构建交易表单的代码,但是因为 application.js 文件不是'erb',所以它找不到值,这里是JS:

Recurly.config({
  subdomain: "ie-webinar"
 , currency: "USD"
 , country: "US"
});

Recurly.buildTransactionForm({
    target: '#recurly-transaction'
  , successURL: '/thank_you.html'
  , signature:'<%= @signature %>'
});

这是 config > initialiser > recurly.rb 中的 Ruby 代码

signature = Recurly.js.sign(
  :transaction => { :amount_in_cents => 19_99, :currency => 'USD' }
)

我该如何解决这个问题?我已经尝试在视图中创建一个 .js.erb 文件,但我不确定如何调用它或让它出现在网站标题中?

【问题讨论】:

  • '' 删除单引号,单引号可能不允许评估 ruby​​ 代码,因此请改用: 注意用 @ 符号替换 at /跨度>

标签: javascript ruby-on-rails ruby requirejs recurly


【解决方案1】:

app/views/partials/_recurly_signature.html.erb

<%= javascript_tag do %> 
   Recurly.signature = "<%=j RECURLY_SIGNATURE %>";
<% end %>

config/initializer/recurly.rb

RECURLY_SIGNATURE = Recurly.js.sign(
  :transaction => { :amount_in_cents => 19_99, :currency => 'USD' }
)

app/views/layouts/application.html.erb

<head>
  = render :partial => "partials/recurly_signature"
</head>

【讨论】:

  • 嗨,感谢您的回复,此方法有效,但是由于 Recurly.Signature 之间的点,我在控制台中收到了意外的令牌错误,当我删除点时,错误消失了但是脚本然后失败。有什么想法吗?
  • 我想说这可能是由于在定义 Recurly 的 .js 文件之前包含了部分内容,但我希望这是一个 ReferenceError 而不是意外的标记。您始终可以在部分中定义任何您想要的任意变量(例如,foo = "&lt;%=j RECURLY_SIGNATURE %&gt;";,然后将其分配给 Recurly.buildTransactionForm({ signature: foo }); 中的 Recurly.signature
  • 太棒了!这工作正常,但我遇到的问题是 application.js 文件在 jquery 和所有其他脚本(包括 recurly.js 文件)之前加载,因此它不断抛出未定义的错误。该项目正在使用 requirejs 和资产管道(?)。非常令人沮丧!
猜你喜欢
  • 2015-10-19
  • 2020-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 2014-12-25
  • 1970-01-01
相关资源
最近更新 更多