【发布时间】:2013-06-27 05:18:20
【问题描述】:
我正在尝试将 filename JavaScript 变量注入到我的 Ruby 代码中,如下所示:
"#{ajax_download_report_url(" + filename+ ")}"
这是一个基本的路由 URL,但我需要在 HAML 中传递这个变量,因为我从这个 Ajax 请求中得到它:
:javascript
var updaterId = setInterval(function() {
$.ajax({
url: #{admin_reports_url.to_json},
dataType: "json",
type: "GET",
data: {job_id: "#{job_id}"},
success: function(response){
var filename = response.file;
switch(status) {
case 'failed':
$('.loader').hide();
clearInterval(updaterId);
alert(message);
break;
case 'completed':
$('.loader').hide();
clearInterval(updaterId);
location.href = "#{ajax_download_report_admin_reports_url(" + filename+ ")}";
break;
}
}
})}, 1000);
现在我有一个错误:
ActionController::RoutingError - No route matches
{:controller=>"admin/reports", :action=>"ajax_download_report", :file=>" + filename+ "}
这意味着 HAML 无法正确评估此代码。
【问题讨论】:
-
您似乎没有尝试将 JavaScript 变量注入 Ruby 代码,但这是行不通的。相反,您似乎想在一些 JavaScript 代码中插入一个 Ruby 变量。
-
@the Tin Man,var filename 更高。
-
是的,这些是 Ruby 字符串,通过
#{...}中的字符串插值注入到 JavaScript 代码中。
标签: ruby ruby-on-rails-3 variables haml inject