ruby-on-rails – 使用Haml对象引用,例如%的div [@user]

Haml有一个很好的功能,叫做
Object reference,我可以这样做:

%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 helpers完成吗?

最佳答案 我知道没有内置的方法来做到这一点.我可能会创建一个帮助方法,如果它是你将要做很多事情.

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

尽管如此,如果您在Rails之外执行此操作,则需要注意下划线方法(这是我可以考虑避免使用link_to帮助程序的唯一原因).

点赞