【问题标题】:how can I test a ruby/rails variable on coffeescript?如何在咖啡脚本上测试 ruby​​/rails 变量?
【发布时间】:2013-05-15 01:23:19
【问题描述】:

如何在 coffeescript 中测试 ruby​​ 变量?我正在更新一个 Rails 遗留应用程序,并尝试在第一步中保持原始格式的关闭。使用.js.erb,我可以简单地执行<%= if @var %> 来实现我所需要的。

下面是两次错误尝试的视图代码:

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

我在咖啡脚本文件的第一行收到以下错误:

ActionView::Template::Error (SyntaxError: unexpected {):

那么,我如何在 coffeescript 中测试一个 ruby​​ 变量?

【问题讨论】:

标签: ruby-on-rails ruby coffeescript


【解决方案1】:

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

就像 MyYoshiji 所链接的问题所说,Rails 团队出于性能原因决定不支持您尝试做的事情。

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

【讨论】:

  • 谢谢,这正是我想要的。我知道这不是最好的解决方案,但正如我所说,我正在升级一个包含大量页面的遗留应用程序,因此一次更改所有内容的逻辑可能会很麻烦。
猜你喜欢
  • 1970-01-01
  • 2019-05-02
  • 2018-05-26
  • 2011-11-08
  • 2017-10-18
  • 2012-11-27
  • 1970-01-01
  • 2013-09-08
  • 2018-05-18
相关资源
最近更新 更多