如何在coffeescript上测试ruby / rails变量?

时间:2013-05-20 13:10:13

标签: ruby-on-rails ruby coffeescript

如何在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变量?

1 个答案:

答案 0 :(得分:1)

如果您真的想在CoffeeScript文件中使用Ruby代码,只需将其重命名为*.js.coffee.erb即可。然后,您可以将<%= %>标记放在文件中。

就像MyYoshiji所说的问题一样,Rails团队决定不支持你出于性能原因要做的事情。

我个人会使用我的Ruby数据在视图文件中设置一些JS变量,然后在我的CoffeeScript文件中加载这些变量。