对于属性,您可以在 之后编写 ruby 代码=
,但如果 ruby 代码中有空格,则必须在 ruby 代码周围加上括号:
option[value="1" selected=("selected" if @title=="Mrs.")] "Mrs."
请参阅此处的“Ruby 属性”:http ://rdoc.info/gems/slim/frames 。
括号是可选的,所以你也可以这样写:
option value="1" selected=("selected" if @title=="Mrs.") "Mrs."
或者,您可以使用不同的分隔符来代替括号:
option {value="1" selected=("selected" if @title=="Mrs.")} "Mrs."
这是一些代码:
苗条.苗条:
doctype html
html
head
title Slim Examples
meta name="keywords" content="template language"
body
h1 Markup examples
p This example shows you how a basic Slim file looks like.
select
option[value="1" selected=("selected" if @title=="Mr.")] "Mr."
option[value="2" selected=("selected" if @title=="Mrs.")] "Mrs."
在没有 rails 的独立 ruby 程序中使用 Slim:
require 'slim'
template = Slim::Template.new(
"slim.slim",
pretty: true #pretty print the html
)
class Person
attr_accessor :title
def initialize title
@title = title
end
end
person = Person.new("Mrs.")
puts template.render(person)
--output:--
<!DOCTYPE html>
<html>
<head>
<title>
Slim Examples
</title>
<meta content="template language" name="keywords" />
</head>
<body>
<h1>
Markup examples
</h1>
<p>
This example shows you how a basic Slim file looks like.
</p>
<select><option value="1">"Mr."</option><option selected="selected" value="2">"Mrs."</option></select>
</body>
</html>
我猜字符串“false”被解释为true。
是的。评估为 false 的唯一事物是 false 本身和 nil。任何数字(包括0)、任何字符串(包括“”)、任何数组(包括[])等都是真的。
与您的问题无关,但可能对某些未来的搜索者有用......我猜 Slim 在您作为参数传递给渲染的任何对象中查找实例变量。因此,如果您想为模板提供一大堆值,您可以编写:
require 'slim'
template = Slim::Template.new(
"slim.slim",
pretty: true #pretty print the html
)
class MyVals
attr_accessor :count, :title, :animals
def initialize count, title, animals
@count = count
@title = title
@animals = animals
end
end
vals = MyVals.new(4, "Sir James III", %w[ squirrel, monkey, cobra ])
puts template.render(vals)
苗条.苗条:
doctype html
html
head
title Slim Examples
meta name="keywords" content="template language"
body
p =@count
p =@title
p =@animals[-1]
OpenStruct 和 Struct 都不能与 render() 一起工作,尽管它们看起来像是天生的候选者。