如何在Javascript中调用ruby值

如何在Javascript中调用ruby值,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,我有一个称为的ruby值,它输出一个字符串,我想将这个字符串设置为等于document.getElementById(“quoteArea”).value=“value”中的javascript值。我环顾四周,发现了类似的问题,但没有一个能解决我的问题。有什么想法吗?谢谢。如果id为#quoteArea的元素在您的视图中可用,您应该能够使用您在问题中引用的相同erb代码设置其值 如果您无法控制#quoteArea元素,则可以在页面中定义一个javascript变量,以便以后使用: // In Y

我有一个称为
的ruby值,它输出一个字符串,我想将这个字符串设置为等于
document.getElementById(“quoteArea”).value=“value”
中的javascript值。我环顾四周,发现了类似的问题,但没有一个能解决我的问题。有什么想法吗?谢谢。

如果id为
#quoteArea
的元素在您的视图中可用,您应该能够使用您在问题中引用的相同erb代码设置其值

如果您无法控制
#quoteArea
元素,则可以在页面中定义一个javascript变量,以便以后使用:

// In Your HTML View
<script>
  var quote = "<%= @random_quote.quote %>";
</script>

// In a JS File loaded after the variable assignment
document.getElementById("quoteArea").value = quote;
//在HTML视图中
var quote=“”;
//在变量赋值后加载的JS文件中
document.getElementById(“quoteArea”).value=quote;

将该Ruby值分配给JavaScript变量

比如:

var myVariable = "<%= @random_quote.quote %>";

document.getElementById("quoteArea").value = myVariable;
var myVariable=”“;
document.getElementById(“quoteArea”).value=myVariable;

如果您在视图中使用erb:

# your_view.html.erb
document.getElementById("quoteArea").value =  "<%= @random_quote.quote %>";
# your_view.html.haml
:javascript
  document.getElementById("quoteArea").value =  "#{@random_quote.quote}";

您可以在资产管道中使用some.js.erb并从中分配值,这不是一个很好的方法,但只有一种方法,或者您可以在某些元素数据的DOM(文档对象模型)中设置值并从中获取值。下面是一个虚拟示例

<div data-my_value="<%= @random_quote.quote %>"></div>
jQuery("[data-my_value]").data("my_value"); 

jQuery(“[data-my_value]”)。数据(“my_value”);
诸如此类的事。希望这对你有帮助


干杯

您可以制作一个文件.js.erb 这些文件首先由ruby解释,然后由js解释

var jsVariable = "<%=ruby_variable%>";
var jsVariable=”“;
如果您需要将一些数据发送到js文件,并且不希望通过长时间的视图和解析来完成此操作,请查看。
这将为通过javascript访问的变量赋值

gon.variable_name = variable_value

# or new syntax
gon.push({
  :user_id => 1,
  :user_role => "admin"
})

gon.push(any_object) # any_object with respond_to? :each_pair
然后,要在javascript中访问该变量,请执行以下操作:

gon.variable_name

在JS文件中。

谢谢!工作得很好。