Использование turbolinks в Rails link для

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

<%= 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.

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

6 ответов


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

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

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

а также работает:

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

Edit:

С Turbolinks 5 мы должны использовать немного другой синтаксис. Пожалуйста, смотрите Джозеф.


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

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

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


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

 <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 to "true".


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

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

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


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

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

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


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

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