Подтвердить что ты не робот

Rails и haml, как добавить идентификаторы id и классов в link_to helper?

Я смотрел, как добавить селектор id в помощник link_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 - ...??

Что было бы эквивалентно b в haml?

4b9b3361

Ответ 1

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>

Подробнее о том, как вставить ruby-код в haml: Вставка ruby ​​

И только поэтому нет никаких сомнений относительно передачи идентификаторов и классов в link_to, вот пример из документации:

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

Ответ 2

Чтобы добавить селектор id в haml, используя link_to, вам нужно указать два хэша.

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

Важная идиома Ruby - это режим поэзии: возможность пропуска круглых скобок и фигурных скобок, когда синтаксический разбор однозначен. Как правило, программисты Ruby могут опускать круглые скобки вокруг аргументов вызову метода и пропускать фигурные скобки, когда последний аргумент вызова метода является хешем. Следовательно, следующие два вызова метода эквивалентны с помощью метода link_to, который принимает один строковый аргумент и один хэш-аргумент:

Без фигурных скобок невозможно определить, пытается ли этот вызов передать хэш с двумя ключами или двумя хэшами по одному ключу. Поэтому режим поэзии может использоваться только тогда, когда существует единственный аргумент хэша и его последний аргумент.

Паттерсон, Дэвид; Фокс, Армандо (2012-08-24). Инженерное долговременное программное обеспечение: гибкий подход с использованием SaaS и облачных вычислений, бета-версия (Kindle Locations 1973-1975). Strawberry Canyon LLC. Kindle Edition.