如何在coffeescript中测试ruby变量?我正在更新rails遗留应用程序,并尝试在第一步中保持原始格式的关闭。使用.js.erb
,我可以简单地<%= if @var %>
来实现我的需求。
Bellow是视图的代码,有两次错误的尝试:
if @review_change_needs_refresh # Don't work
# if "#{@review_change_needs_refresh}" == "true" Don't work too
location.reload()
else
button_div_id = "#ManagedWorkFor#{@work.class.to_s}#{@work.id}"
label_div_id = "#chat_#{@managed_work.to_language_id}_label"
$(button_div_id,"#{escape_javascript(render(:partial => "/managed_works/managed_work", :object=>@work))}")
if @checkbox_label.any?
for element in $("##{label_div_id}") then do => $("##{label_div_id}", "#{@checkbox_label}")
在操作上,正在测试的变量是布尔值:
@review_change_needs_refresh = params[:review_change_needs_refresh] == 1
我在coffeescript文件的第一行收到以下错误:
ActionView::Template::Error (SyntaxError: unexpected {):
那么,我如何在coffeescript中测试ruby变量?
答案 0 :(得分:1)
如果您真的想在CoffeeScript文件中使用Ruby代码,只需将其重命名为*.js.coffee.erb
即可。然后,您可以将<%= %>
标记放在文件中。
就像MyYoshiji所说的问题一样,Rails团队决定不支持你出于性能原因要做的事情。
我个人会使用我的Ruby数据在视图文件中设置一些JS变量,然后在我的CoffeeScript文件中加载这些变量。