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

Использование turbolinks в Rails link_to

Просто интересно, есть ли способ использовать turbolinks прямо в рельсах link_to helper, быстрый бит googling не раскрывает ничего примечательного, вот тот тип вещи, который я пробовал безрезультатно.

<%= link_to 'Giraffe', giraffe_path(@giraffe), :data-no-turbolink => 'true' %>
<%= link_to 'Giraffe', giraffe_path(@giraffe), :data { :no-turbolink => 'true'} %>

Я знаю, что вы можете делать это в обычных ссылках, таких как

<a data-no-turbolink='true' href="/giraffe-130">Giraffe</a>

Сейчас я просто включаю атрибут на элементы, которые окружают ссылку, такую ​​как lis или divs.

Спасибо заранее.

4b9b3361

Ответ 1

Правка для Rails 5+: @ManishShrivastava правильно указала на другой синтаксис, необходимый для Rails 5, как показано в ответе Джозефа.

<%= link_to('Giraffe', @giraffe, data: { turbolinks: false }) %>

Для Rails 4 и ниже

Первоначально я думал, что вам нужно использовать синтаксис хеш-ракеты для символа, но это не так. Вы можете использовать data: хеш, и внутри этого хеша любые символы, использующие подчеркивание _ будут преобразованы в тире -.

Я думаю, что большинство разработчиков Rails предпочли бы видеть следующее (включая меня, теперь, когда я знаю лучше):

<%= link_to('Giraffe', @giraffe, data: { no_turbolink: true }) %>

Но следующее также работает:

<%= link_to('Giraffe', @giraffe, 'data-no-turbolink' => true) %>

Ответ 2

Turbolinks 5 использует несколько иной синтаксис

<%= link_to "Foo", new_foo_path(@foo), data: { turbolinks: false } %>

Источник: Страница Turbolinks Github

Ответ 3

Вы можете использовать символ без проблем для создания следующего кода:

 <a data-no-turbolink='true' href="/giraffe-130">Giraffe</a>

Просто выполните следующие действия:

 <%= link_to 'Giraffe', giraffe_path(@giraffe),
             :data => { :no_turbolink => true } %>

Примечание: :no_turbolink станет no-turbolink, и значение будет автоматически преобразовано в JSON, используя to_json, например. true до "true".

Ответ 4

@Joseph вы правы, но только небольшое изменение:

<%= link_to "Foo", new_foo_path(@foo), data: { turbolinks: 'false' } %>

Когда я набираю turbolinks: false, не работает с bool, работает только тогда, когда я использую строку для значения turbolinks: 'false'. Так что, возможно, кто-то поможет в этой информации;).

Ответ 5

Или синтаксис Ruby 1.9+:

<%= link_to 'Foo', foo_path(@foo), data: { no_turbolink: true } %>

Но я закончил падение turbolinks в пользу Wiselinks, который делает поведение явным для всех ссылок, плюс Wiselinks также поддерживает частичное обновление (например, пейджинг), заменить состояние (не загрязняет историю браузера, отлично подходит для сортировки столбцов), представление формы (отлично подходит для форм поиска), перенаправления, поддержка браузеров без API истории и более интеллектуальное управление изменениями активов.

Ответ 6

когда вы хотите изменить язык с помощью языка, вы можете сделать это здесь:

<%= link_to content_tag(:span, "Українською"),  {locale: :uk},  
data:{ turbolinks: "false" }%>