2013-02-02 11 views
12

Rozglądałem się, jak dodać selektor id do pomocnika link_to przy użyciu haml, czy to możliwe?Railsy i haml, jak dodać id i selektory klasy do pomocnika link_to?

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 - ...?? 

Jaki byłby odpowiednik b w haml?

Odpowiedz

25

link_to działa dokładnie tak samo w Haml jak w erb. Więc to będzie robić to, co chcesz:

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

Można również przypisać atrybut class w ten sposób:

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

Więcej o tym, jak wstawić kod rubinowy w haml: Inserting ruby

I tak więc nie ma żadnych wątpliwości co do przechodzenia identyfikatorów i klas do link_to, tutaj jest przykładem from the docs:

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

Witam @shioyama, to podejście doda identyfikator adresu URL. i czego szukam, to dodaj selektor identyfikatora, taki jak link 1. – evanx

+1

Dokładnie to zrobi: 'Link 1'. Nie doda go do adresu URL. –

+0

Dodałem przykład z dokumentów na 'link_to', jak widać" id "zostanie poprawnie przypisany do tagu' a', nie dołączony do adresu URL. –

4

Aby dodać selektor id w haml za pomocą linku_do określenia dwóch skrótów.

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

Ważnym Ruby idiom jest tryb poezja: możliwość pominąć nawiasy i nawiasów klamrowych gdy parsowanie jest jednoznaczna. Najczęściej programiści Rubiego mogą pomijać nawiasy wokół argumentów wywołania metody i pomijać nawiasy klamrowe, gdy ostatnim argumentem wywołania metody jest hash. Stąd dwa następujące wywołania metod są równoważne, ponieważ metoda link_to że przyjmuje jeden argument ciąg i jeden hash argument:

Bez klamrami, nie ma sposobu, aby powiedzieć, czy ta rozmowa jest stara się przekazać hash z dwoma kluczami lub dwa skróty po jednym kluczu. Dlatego tryb poezji może być użyty tylko wtedy, gdy istnieje jeden argument hash i jest to ostatni argument.

Patterson, David; Fox, Armando (2012-08-24). Inżynieria długotrwałego oprogramowania: Agile podejście przy użyciu SaaS i Cloud Computing, Beta Edition (Kindle Lokalizacje 1973-1975). Strawberry Canyon LLC. Wersja Kindle.

+0

Nie trzeba * przekazywać dwóch skrótów dla tej sprawy, 'link_to" Link 1 ", ścieżka_ rezerwacji,: id =>" zarezerwowane "' będzie działać poprawnie. –

+0

Dzięki za użycie nawiasów klamrowych, nie używanie ich jest powodem, dla którego to nie działało dla mnie. '<% = link_to 'Indeks wideo', kontroler: 'wideo',: id => 'indeks'%>' wyjście 'Video Index' ale zmiana tego na '{kontroler: 'wideo'}' sprawia, że ​​poprawnie wypisuje 'Video Index ' –