Đối với một thuộc tính, bạn có thể viết mã ruby sau khi =
, nhưng nếu mã ruby có khoảng trống trong nó, bạn cần phải đặt dấu ngoặc xung quanh mã ruby:
option[value="1" selected=("selected" if @title=="Mrs.")] "Mrs."
Xem "Ruby thuộc tính" ở đây : http://rdoc.info/gems/slim/frames.
Các dấu ngoặc là không bắt buộc, vì vậy bạn cũng có thể viết nó như thế này:
option value="1" selected=("selected" if @title=="Mrs.") "Mrs."
Hoặc, thay vì dấu ngoặc, bạn có thể sử dụng một dấu phân cách khác nhau:
option {value="1" selected=("selected" if @title=="Mrs.")} "Mrs."
Dưới đây là với một số mã:
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."
Sử dụng Slim trong một chương trình độc lập mà không cần đường ray ruby:
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>
Tôi đoán chuỗi "false" được hiểu như là sự thật.
Có. Những điều duy nhất đánh giá sai là sai chính nó và không. Bất kỳ số nào (bao gồm 0), bất kỳ chuỗi nào (bao gồm cả "") và bất kỳ mảng nào (bao gồm []), v.v. đều là true.
Không thích hợp với vấn đề của bạn, nhưng có lẽ hữu ích đối với một số người tìm kiếm trong tương lai ... Tôi đoán Slim tra cứu các biến mẫu trong bất kỳ đối tượng nào bạn chuyển làm đối số để hiển thị. Vì vậy, nếu bạn muốn cung cấp toàn bộ các giá trị cho mẫu, bạn có thể viết:
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)
mỏng.mỏng:
doctype html
html
head
title Slim Examples
meta name="keywords" content="template language"
body
p [email protected]
p [email protected]
p [email protected][-1]
Cả OpenStruct lẫn Struct đều không hoạt động với kết xuất() mặc dù chúng có vẻ giống như ứng cử viên tự nhiên.