我正在学习Rails,我看过这些模板引擎.我对他们没有经验(只有erb).
但由于我是初学者,我真的很困惑.你建议哪一个?为什么?Erb,Haml还是Slim?请告诉你理由偏爱其他人.如果您有任何其他建议,请告诉我们.
编辑:我不是在寻找胜利者.我只是想听听你对他们的看法,他们的语法,执行速度等等.
只是为了帮助其他开发者,因为SO上没有类似的问题.
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
Run Code Online (Sandbox Code Playgroud) 我正在评估Slim作为个人项目中HAML的替代品,它似乎不像HAML那样优雅地处理HTML5数据属性.我希望有人也可能碰到这个,或者可能已经知道我在他们的文档中还没有找到的选项/语法.
HAML允许您通过使用嵌套哈希来定义HTML 5数据属性,如下所示:
%a{data: {key1: 'val', key2: 'val'}}
导致
<a data-key1='val' data-key2='val'></a>
我有一个Rails控制器,我在其中设置一个实例变量 -
@user_name = "Some Username"
Run Code Online (Sandbox Code Playgroud)
在我的.slim模板中,我使用咖啡引擎生成javascript,并希望从客户端sie javascript代码打印出用户名 -
coffee:
$(document).ready ->
name = "#{@user_name}"
alert name
Run Code Online (Sandbox Code Playgroud)
但这是正在生成的JavaScript?
$(document).ready(function() {
var name;
name = "" + this.my_name;
alert(name);
}
Run Code Online (Sandbox Code Playgroud)
如何在CoffeeScript代码中访问控制器实例变量?
我正在将其标记为haml,因为我猜测haml在使用CoffeeScript时会遇到同样的问题.
在rails slim(http://slim-lang.com/)中,定义具有类名"sample"的新div的语法如下:
.sample
= "Content goes here"
Run Code Online (Sandbox Code Playgroud)
这将创建:
<div class="sample">
Content goes here
</div>
Run Code Online (Sandbox Code Playgroud)
我想根据铁路的助手,变量或其他东西来定义div的类......比如,在rails中:
<div class="sample #{@variable.name}">
Content goes here
</div>
Run Code Online (Sandbox Code Playgroud)
我不知道如何在苗条中做到这一点:
.sample #what else goes here?
Content goes here
Run Code Online (Sandbox Code Playgroud)
谁知道怎么样?
有一种方法可以在javascript块中放入ruby条件吗?即
javascript:
var config = {
common_value_1 : 1,
common_value_2 : 2
};
- if my_value === true # this must be a ruby condition
config.custom_true_value_1 = "1" ;
config.custom_true_value_2 = "#{my_value}" ;
- else
config.custom_false_value_1 = "1" ;
config.custom_false_value_2 = "#{my_value}" ;
Run Code Online (Sandbox Code Playgroud)
或者这个问题有另一种解决方法吗?因为我可以使用它的丑陋方式:
javascript:
var config = {
common_value_1 : 1,
common_value_2 : 2
};
- if my_value === true # this must be a ruby condition
javascript:
config.custom_true_value_1 = "1" ;
config.custom_true_value_2 = "#{my_value}" ;
- else
javascript: …Run Code Online (Sandbox Code Playgroud) 单程:
javascript_tag do
== "var all_product_ids = #{existing_ids.to_json};"
== "var products_json = #{@filter.data.to_json};"
Run Code Online (Sandbox Code Playgroud)
要么:
= %Q{
var all_product_ids = #{existing_ids.to_json};
var products_json = #{@filter.data.to_json};
}
Run Code Online (Sandbox Code Playgroud)
对此有什么更好的解决方案吗?
如何生成动态类名?
li v-for='obj in objs'
| {{ obj.id }} {{ obj.title }}
div id="obj-{{ obj.id }} " style="float:right; color:red;"
Run Code Online (Sandbox Code Playgroud)
这个样本不起作用!我需要这个类名来更新div!
我正在开发Ruby on Rails项目,我需要自定义Gems提供的默认视图.
要求是使用Slim作为模板.我知道ERB是Rails的默认模板引擎.
根据我的观察,ERB的优先级是,如果不是,它将使用Slim/Haml视图.
我有兴趣知道是否可以将Slim设置为默认值而不是ERB?
如何实现这一点,以便当我在Slim中创建本地版本的模板时,它将覆盖gem提供的模板.
任何线索将不胜感激.
在Slim中,我什么时候应该使用双等号?
例如:
== yield
== render 'partial'
== stylesheet_link_tag "application", media: "all"
title == full_title(yield(:title))
- flash.each do |key, value|
== value
Run Code Online (Sandbox Code Playgroud)
要么
= yield
= render 'partial'
= stylesheet_link_tag "application", media: "all"
title == full_title(yield(:title))
- flash.each do |key, value|
= value
Run Code Online (Sandbox Code Playgroud)