我可以在 Coffeebeans / js.coffee 视图中使用 HAML 风格的嵌入式 ruby 吗?
Posted
技术标签:
【中文标题】我可以在 Coffeebeans / js.coffee 视图中使用 HAML 风格的嵌入式 ruby 吗?【英文标题】:Can I use HAML-style embedded ruby with Coffeebeans / js.coffee views? 【发布时间】:2012-06-29 06:42:01 【问题描述】:我的 rails 控制器经常返回 JS,并且我正在使用 Coffeebeans 来允许我拥有 js.coffee 视图。唯一的问题是它对嵌入式 Ruby 使用 <%= ... %>
语法......我最好使用 Coffeescript/HAML 风格的字符串插值,即:#..
和 HAML 风格的标签,即代替 @987654324 @,只需使用带有适当缩进的=
。
我想这种语法最好与文件扩展名 js.coffee.haml 一起使用。这可能吗?简单地用该扩展名保存我的文件是行不通的,我猜 Coffeebeans 需要稍作调整以允许这样做,但我不知道我需要做什么。
这篇文章建议有可能:Chaining template handlers in Rails 3
关于如何解决这个问题有什么建议吗?
【问题讨论】:
我建议继续使用 erb,因为在 .js 的纯文本中不能有缩进。不幸的是,使用haml,代码看起来并不漂亮:( 你真的需要那个吗?无论哪种方式查看世代都会增加大量开销:) 【参考方案1】:您链接到的问题有第二个答案,该答案链接到posterous 上的一篇博文,该博文现在已经死了......但是I found it on archive.org! 该帖子还包含初始化程序中需要的a gist with the code,以便您可以命名以js.coffee_haml
结尾的文件并处理它们。
为了防止将来出现死链接,这里是gist中的代码,但我没有写,也没有测试它是否仍然有效:
module Coffee
module Rails
class HamlTemplateHandler
def self.haml_handler
@@haml_handler ||= ActionView::Template.registered_template_handler(:haml)
end
def self.call(template)
compiled_source = haml_handler.call(template)
"CoffeeScript.compile(begin;#compiled_source;end)"
end
end
end
end
ActiveSupport.on_load(:action_view) do
ActionView::Template.register_template_handler :coffee_haml, Coffee::Rails::HamlTemplateHandler
end
博文中还提到了haml不允许嵌套纯文本,所以如果你想在coffeescript中做这样的事情:
if xyz == 1
do_this y
do_that x
您必须将其包装在 :plain
过滤器中:
:plain
if xyz == 1
do_this y
do_that x
【讨论】:
以上是关于我可以在 Coffeebeans / js.coffee 视图中使用 HAML 风格的嵌入式 ruby 吗?的主要内容,如果未能解决你的问题,请参考以下文章
Ant 使用 exec 目标编译 Coffee Scripts
我可以将 UIImage 作为文本放在 textview 中,以便我可以在 ios 中将它们作为文本删除
我可以创建一个学生,但它不会保存在 mysql 表上。我收到一个控制台错误,我可以弄清楚它是啥[关闭]
一旦我可以使用 XMPP 列出用户,我如何在这些用户之间实现聊天?