2013-02-02 49 views
12

我一直在尋找如何添加一個id選擇器到link_to幫手使用haml,這是可能的嗎?Rails和haml,如何將id和類選擇器添加到link_to helper?

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?

回答

25

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> 
+0

嗨@shioyama,該方法將添加一個id的網址。我正在尋找的是添加一個id選擇器,如link 1。 – evanx

+1

這就是它會做的:'Link 1'。它不會將其添加到網址。 –

+0

我已經在'link_to'的文檔中添加了一個示例,您可以看到'id'將被正確指定給'a'標記,而不是附加到URL。 –

4

要使用link_to在haml中添加一個id選擇器,您必須指定兩個哈希值。

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

一個重要的紅寶石成語是詩歌模式:省略括號和花括號時解析是明確的能力。大多數情況下,Ruby程序員可能會忽略方法調用的參數周圍的括號,並且當方法調用的最後一個參數是哈希時,省略大括號。因此,以下兩種方法調用是等價的,給定一個方法的link_to帶一個字符串參數和一個散列參數:

沒有大括號,沒有辦法知道這個電話是否試圖通過哈希有兩個鍵或者每個密鑰有兩個哈希值。因此詩歌模式只能在有一個散列參數時才能使用,而且是最後一個參數。

Patterson,David;福克斯,阿曼多(2012-08-24)。工程長期持續軟件:使用SaaS和雲計算的敏捷方法,Beta版(Kindle Locations 1973-1975)。草莓峽谷LLC。 Kindle版。

+0

你不需要*爲這種情況傳遞兩個散列,'link_to「鏈接1」,booking_path,:id =>「預訂」'將工作正常。 –

+0

感謝您使用大括號,不使用它們是爲什麼這不適合我。 '<%= link_to'Video Index',controller:'videos',:id =>'index'%>'output'Video Index'但將它改爲這個'{controller:'videos'}'正確輸出'Video Index ' –

相關問題