kap*_*pso 50 haml ruby-on-rails coffeescript ruby-on-rails-3 slim-lang
我有一个Rails控制器,我在其中设置一个实例变量 -
@user_name = "Some Username"
Run Code Online (Sandbox Code Playgroud)
在我的.slim模板中,我使用咖啡引擎生成javascript,并希望从客户端sie javascript代码打印出用户名 -
coffee:
$(document).ready ->
name = "#{@user_name}"
alert name
Run Code Online (Sandbox Code Playgroud)
但这是正在生成的JavaScript?
$(document).ready(function() {
var name;
name = "" + this.my_name;
alert(name);
}
Run Code Online (Sandbox Code Playgroud)
如何在CoffeeScript代码中访问控制器实例变量?
我正在将其标记为haml,因为我猜测haml在使用CoffeeScript时会遇到同样的问题.
Tre*_*ham 92
正在发生的事情是"#{@user_name}"
被解释为CoffeeScript,而不是被评估并注入到CoffeeScript源代码中的Ruby代码.你问,"我如何将一个Ruby变量注入我的CoffeeScript源代码?"
简短的回答是:不要这样做.Rails团队故意决定不在3.1中的模板中支持嵌入式CoffeeScript,因为必须在每个请求上编译CoffeeScript会产生显着的性能开销(如果允许将任意字符串注入源中,则必须这样做) .
我的建议是将您的Ruby变量分别作为纯JavaScript提供,然后从CoffeeScript引用这些变量,例如:
javascript:
user_name = "#{@user_name}";
coffee:
$(document).ready ->
name = user_name
alert name
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44052 次 |
最近记录: |