2009-03-07 8 views

ответ

25

В Rails 3 и более ранние версии:

link_to_function "Back", "history.back()" 

В Rails 4, этот метод был удален. См. Комментарий Андреаса.

+5

Помните, что link_to_function обесценивается в Rails 4.1. Дополнительная информация: http://stackoverflow.com/questions/14324919/status-of-rails-link-to-function-deprecation – Andreas

+0

Спасибо, отличная точка. –

+0

наслаждайтесь «неопределенным методом» link_to_function 'для # <#

163

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

<%= link_to 'Back', :back %> 

Это specificied в RDoc here

Это создает некоторые Javascript для навигации в обратном направлении. Я только что протестировал его, и он работает.

+8

Это не работает «точно», как кнопка «Назад». Все введенные данные формы очищаются. – alamodey

+0

Красивый материал! –

+0

Да, я чувствую, что это действительно помогает большинству людей на полпути. Если вы действительно хотите эмулировать кнопку «Назад», вам также нужны все предыдущие параметры. – ohhh

6

Вы можете использовать link_to("Hello", :back) для генерации <a href="javascript:history.back()">Hello</a>.

0

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

link_to_function "Back", "history.back()" 

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

9

In Rails 4,2, я ему работать с этим:

<a href="javascript:history.back()">Refine Search</a> 

я украл офф @cpm’s answer, за исключением того, что link_to("Refine Search", :back) не делать работу, которую я хотел в то время как вставки в генерируемый код <a href="javascript:history.back()">Refine Search</a> сделал в совершенстве.

+0

Да, 'link_to (« Уточнить поиск »,: назад)' просто сохранит последнее действие без каких-либо параметров и вернет вас туда, где, когда ваше решение использует js – ohhh

+0

@ohhh, это тоже не работает для меня: undefined метод 'stringify_keys 'для: back: Symbol – facundofarias

+0

@facundofarias, что звучит несвязано, каков точный синтаксис вашего' link_to'? – ohhh

1

Это будет работать так же, как браузер кнопку назад попробовать этот

<%= link_to 'Back', 'javascript:history.go(-1);' %>

1

Обратите внимание на this comment от пользователя rthbound! Как он отмечает, link_to с символом :back не всегда генерирует «реальное» событие назад, как если бы пользователь нажал кнопку «Назад» своего браузера. Это также может быть повторная передача действия, которое загрузило текущее представление.

documentation for Rails 4.2.6 говорит это о link_to и :back символ:

Используя :back Symbol вместо хеш опций будет генерировать ссылку на реферера (а JavaScript обратную ссылку будет использоваться вместо а referrer если нет есть).

0

Если вам нравится, мне не нужно поведение link_to "cancel", :back, вы можете реализовать вспомогательный метод, который либо ссылается на путь указателя записей, либо показывает путь. (Т.е. teams_path или team_path(@team)

module CancelFormButtonHelper 
    def cancel_button(record) 
    index_path = record.class.to_s.pluralize.downcase + "_path" 
    path = record.persisted? ? record : eval(index_path) 

    link_to "Cancel", path 
    end 
end 

, которые затем могут быть использованы в качестве <%= cancel_button @team %> в форме, например.

0

Вы можете использовать JS функцию window.history.назад()

= link_to 'Back', onclick: "window.history.back();" 
3

Это работает в Rails 5.1 вместе с Turbolinks.

link_to 'Back', 'javascript:history.back()' 
Смежные вопросы