Rails和haml,如何在link_to helper中添加id和类选择器?

时间:2013-02-02 02:40:07

标签: ruby-on-rails-3 haml

我一直在寻找如何使用idlink_to帮助器添加haml选择器,这可能吗?

  a .haml - %a#booked{:href => "index.haml"} Link 1    

  b .html.erb - booking.html.erb - <%= link_to "Link 1", booking_path, :id => "booked" %>

  c .haml.erb - booking.haml.erb - ...??

这相当于haml中的b?

2 个答案:

答案 0 :(得分:28)

link_to在haml中的工作方式与在erb中完全相同。所以这将做你想要的:

= link_to "Link 1", booking_path, :id => "booked"
#=> <a id="booked" href="/bookings">Link 1</a>

您还可以通过以下方式指定类属性:

= link_to "Link 1", booking_path, :id => "booked", :class => "some_class"
#=> <a id="booked" class="some_class" href="/bookings">Link 1</a>

有关如何在haml中插入ruby代码的更多信息:Inserting ruby

而且,对于将ID和类传递给link_to毫无疑问,这是一个示例from the docs

link_to "Articles", articles_path, :id => "news", :class => "article"
#=> <a href="/articles" class="article" id="news">Articles</a>

答案 1 :(得分:4)

要使用link_to在haml中添加id选择器,您必须指定两个哈希值。

e.g = link_to "Link 1", {booking_path, extra arg...}, {:id => 'booked'}

一个重要的Ruby成语是诗歌模式:当解析明确时,省略括号和花括号的能力。最常见的情况是,Ruby程序员可能会省略围绕方法调用的参数的括号,并在方法调用的最后一个参数是哈希时省略花括号。因此,以下两个方法调用是等效的,给定一个方法 link_to ,它接受一个字符串参数和一个哈希参数:

如果没有花括号,则无法判断此调用是否尝试使用两个键或两个哈希值分别传递哈希值。因此,只有当有一个哈希参数并且它是最后一个参数时,才能使用诗歌模式。

帕特森,大卫;福克斯,阿曼多(2012-08-24)。工程长期软件:使用SaaS和云计算的敏捷方法,Beta版(Kindle Locations 1973-1975)。 Strawberry Canyon LLC。 Kindle版。