Разобрать объект по значению атрибута с помощью hamlc
Я использую CoffeeScript и HAML. У меня есть список объектов:
{
title: "Title"
url: "http://example.com"
image_url: "img.png"
attributes: {
target: '_blank'
}
}
{
// ...
}
И у меня есть шаблон:
- for item in @model.data
%a.menu-item{"href": item.url}
Можно ли как-то разобрать "атрибуты", если он существует, и добавить в %a.menu-item
элемент, чтобы получить <a href="[item.ur]" target="_blank">
2 ответа
Если вы хотите объединить все атрибуты из своего хэша, это должно работать:
%a.menu-item{item['attributes'], "href" => item['url']}
Чтобы условно включить элемент тега, используйте определен? Хитрость заключается в том, что тернеризм - установка значения атрибута на ноль удалит его. ( https://gist.github.com/orioltf/3145400)
В качестве примера (попытка смоделировать вашу ситуацию с помощью небольшого кода Ruby)
- _h1 = {'title' => 'Title', 'url' => "http://example.com", 'image_url'=> "img.png", 'attributes'=> {'target'=> '_blank'}}
- _h2 = {'title' => 'Title2', 'url' => "http://example2.com", 'image_url'=> "img2.png"}
- $data_list = [_h1, _h2]
- class Model; def data() $data_list end end
- @model = Model.new
- for item in @model.data
%a.menu-item{:href => item['url'],
:target => (defined? item['attributes']['target']) ? item['attributes']['target'] : nil}
Обратите внимание, что я использую хэш-методы доступа. В зависимости от того, какие у вас объекты установлены, какую платформу вы используете, вы можете использовать то, что я сделал, item.url, item.get('url') и т. Д.
Вы можете проверить это с помощью haml test.haml test.html Надежда, с которой вы начинаете.