Coffee HAML(.hamlc)中的部分内容

ibl*_*lue 12 haml ruby-on-rails coffeescript backbone.js jst

我在带有HAML Coffee的rails后端使用backbone.js ,这是由haml_coffee_assets编译的.我的模板中有一些重复.

有没有办法创建类似rails的部分来干涸我的模板?

另外:我可以content_for(:something)在咖啡HAML中做吗?

Net*_*rat 20

content_forHaml Coffee中没有帮助器,但您只需在模板中渲染另一个模板即可.

没有局部变量

例如,你有一个模板test:

%p My Partial
%ul
  %li Is included
Run Code Online (Sandbox Code Playgroud)

您可以将其包含在另一个模板中,如下所示:

%p Another template
!= JST['test']()
%p That includes a partial
Run Code Online (Sandbox Code Playgroud)

诀窍是用渲染的HTML来取消!=.

使用局部变量

要传递局部变量,只需将它们发送到JST函数即可.如果这是你的partial(articles/_comments.jst.hamlc):

%h2=@title
%p=@content
Run Code Online (Sandbox Code Playgroud)

那么这可能是你的模板:

%h1 Comments for this article
- for comment in @article.comments 
  != JST['articles/_comment'](comment)
Run Code Online (Sandbox Code Playgroud)

  • 您可以为Haml Coffee资产定义全局上下文,该资产也可以包含一个函数.所以你可以混合使用`{content_for :( name,context = @) - > JST [name](context)}`,这样你就可以使用`@content_for('articles/comment')`它描述了Haml咖啡自述文件定义全局上下文的人. (4认同)