Javascript / jQuery中的Access Rails全局常量
Access Rails global constant in Javascript / jQuery
我的设置:Rails 3.0.9, Ruby 1.9.2, jQuery 1.6.2
Railsconstants.rb (initializer file)
DEFAULT_REPLY = "Add a reply..."
Rails index.html.erb
<%= javascript_include_tag 'reply' %>
...(rest of view code)...
reply.js
$(function() {
var default_reply = <%= h DEFAULT_REPLY -%>;
...(rest of jQuery code)...
});
这会抛出错误Uncaught SyntaxError:Unexpected token %=
,我试图将其括在引号中,如var default_reply = '<%= h DEFAULT_REPLY -%>'
,它原样输出值,这意味着default_value
具有<%= h DEFAULT_REPLY -%>'
的值,这显然不是我想要的。我做错了什么?
编辑考虑到反馈,我重新考虑了一下,现在使用本地变量和jQuery在页面加载时从textarea中提取值。
您需要将.erb添加到.js文件的末尾,并在字符串周围添加引号。
你的javascript文件名应该是reply.js.erb。
当前,您的.js文件没有通过rails运行,而是静态地提供服务。这就是为什么当您在字符串周围加上引号时,它会输出字符串'<%= h DEFAULT_REPLY %>'而不是正确的文本。
我强烈建议不要使用这种方法但是我认为你在这里混淆了两件事。
假设reply.js
在public/javascripts/reply.js
中,这是一个由服务器提供的静态JS文件。你不能在这里放任何动态("服务器端")代码,因为文件不会以任何方式求值,只是静态传递回。
如果你想在你的文件中使用一个全局JS变量,你需要在你的layout
文件app/views/layouts/application.html.erb
或在你的动作文件(index.html.erb
, show.html.erb
等)中分配它。
任何ERB
文件在返回之前都会被求值,因此您可以将
<script type='text/javascript'>
$(function() {
var default_reply = "<%= escape_javascript DEFAULT_REPLY %>";
});
</script>
在layout
文件的<%= yield %>
语句上面。
再一次,我强烈建议不要使用这种方法,但是如果这就是你需要的原因,我认为这将解决它。
听起来你的视图模板命名不正确,它以。html.erb结尾吗?如果没有,它将不会计算您粘贴的ERB片段。
一旦你解决了这个问题,你就可以用下面的ERB代码嵌入你想要的东西:
$(function() {
var default_reply = "<%= h DEFAULT_REPLY -%>";
...
});
如果它是rails 3应用程序,为什么要使用这种语法?试一试:
var default_reply = <%= DEFAULT_REPLY %>;
- 全局变量和全局对象的属性之间有什么区别吗
- 正在全局范围中查找JavaScript函数
- delete关键字在全局变量上的不同行为
- 如何从rails中的代码中删除新行( )
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- Rails File_field最大堆栈大小
- angularjs+rails应用程序中未显示模板
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 全局对象是属于哪个类的对象
- Javascript全局onclick监听器
- 从Javascript方法返回全局变量
- Rails 3.2 js.erb文件转义js
- 将 rails 值分配给全局变量并在 javascript 中使用它
- 如何在Rails应用程序中以不引人注目的javascript访问全局javascript变量
- Javascript / jQuery中的Access Rails全局常量
- 如何传递一个javascript全局变量到requirejs, ruby on rails
- 设置全局ajax数据类型会中断rails远程链接
- 如何为Ruby on Rails 3制作一个全局JavaScript文件,该文件从Rails中获得一些内容<%= ..%
- Rails,js 变量的全局存储