Rails 4:将变量从控制器传递到javascript

Rails 4:将变量从控制器传递到javascript,javascript,ruby-on-rails,Javascript,Ruby On Rails,我是Rails新手,对这个问题困惑了一段时间 我想创建一个翻译应用程序。当用户单击包含单词的链接时,我希望rails控制器通过外部API调用获取翻译,保存单词和翻译,然后显示翻译,而无需刷新页面 我遇到的一个特殊问题是获取一些字符串(这将是翻译)从控制器传递到js文件,然后它可以更新HTML以显示翻译 在控制器(text_controller.rb)中: 在javascript中(createword.js.erb) console.log(“完成”); $(“.message”).html()

我是Rails新手,对这个问题困惑了一段时间

我想创建一个翻译应用程序。当用户单击包含单词的链接时,我希望rails控制器通过外部API调用获取翻译,保存单词和翻译,然后显示翻译,而无需刷新页面

我遇到的一个特殊问题是获取一些字符串(这将是翻译)从控制器传递到js文件,然后它可以更新HTML以显示翻译

在控制器(text_controller.rb)中:

在javascript中(createword.js.erb)

console.log(“完成”);
$(“.message”).html();
当我删除包含@translation的第二行时,javascript工作正常,并将“完成”记录到控制台。然而,当我包含这一行时,它们都不起作用


如何将此变量添加到js中,或者如果不可能,那么将其添加到视图中的最佳方法是什么?

我没有尝试此方法,但添加一些引号可能会满足您的要求:

$(".message").text("<%= @translation %>");
$(“.message”).text(“”);

我没有尝试,但添加一些引号可能会满足您的要求:

$(".message").text("<%= @translation %>");
$(“.message”).text(“”);

我建议使用
$.text
代替:
$(“.message”).text(“”),除非某些翻译是用HTML编写的,否则可能会导致潜在的XSS攻击。例如,假设某个用户存储了一个翻译

单击我查看翻译

我建议使用
$.text
代替:
$(“.message”).text(“”),除非某些翻译是用HTML编写的,否则可能会导致潜在的XSS攻击。例如,假设某个用户存储了一个翻译

单击我查看翻译

$(".message").text("<%= @translation %>");