Для атрибута, вы можете написать рубиновый код после =
, но если код рубин имеет пробелы в нем, вы должны поставить скобки вокруг кода Ruby:
option[value="1" selected=("selected" if @title=="Mrs.")] "Mrs."
Смотрите «Рубин атрибуты» здесь : http://rdoc.info/gems/slim/frames.
Скобки не являются обязательными, так что вы также можете написать это:
option value="1" selected=("selected" if @title=="Mrs.") "Mrs."
Или вместо скобок, вы можете использовать другой разделитель:
option {value="1" selected=("selected" if @title=="Mrs.")} "Mrs."
Вот она с некоторыми код:
slim.slim:
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."
Использование Слим в отдельную программу рубина без рельсов:
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, - это ложь и 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)
тонкий.slim:
doctype html
html
head
title Slim Examples
meta name="keywords" content="template language"
body
p [email protected]
p [email protected]
p [email protected][-1]
Ни OpenStruct, ни Struct не работают с render(), хотя они кажутся естественными кандидатами.