Использование ссылки на объект Haml, например % ДИВ [@user] - PullRequest
4 голосов
/ 14 декабря 2011

У Хамла есть хорошая функция под названием Ссылка на объект , где я могу сделать что-то вроде этого:

%div[user]= user.name

И он генерирует что-то вроде этого:

<div id="user_42" class="user">Billy</div>

Иногда я хочу создать привязку к этому элементу, например:

<a href="#user_42">Link to Billy</a>

Как мне это сделать в Хамле? Есть ли более простой способ, чем этот?:

%a{ :href=> "#user_#{user.id} } Link to Billy

Редактировать: Может быть сделано с автоматически включенными помощниками Haml ?

1 Ответ

2 голосов
/ 14 декабря 2011

Нет встроенного способа сделать это, о котором я знаю.Возможно, я бы создал вспомогательный метод, если вы будете этим заниматься много.

def anchor_to(link_text, object)
  link_to(link_text, "##{object.class.name.underscore}_#{object.id}")
end

Вы можете сделать метод более сложным, если вам нужно обрабатывать больше случаев (передача параметров в link_to и т. Д..) но что-то простое подобное очистило бы это.Генерация ссылки становится такой:

= anchor_to("Link to Billy", @user)

Если вы хотите использовать помощников Haml, вы можете сделать что-то очень похожее (но гораздо более запутанное):

def anchor_to(link_text, object)
  capture_haml do
    haml_tag :a, 'Link to Billy', href: "##{object.class.name.underscore}_#{object.id}"
  end
end

Хотя, имейте в виду, чтоunderscore метод не будет доступен, если вы делаете это вне Rails (это единственная причина, по которой я могу избежать избегания помощника link_to).

...