Разобрать объект по значению атрибута с помощью 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 Надежда, с которой вы начинаете.

Другие вопросы по тегам