Popup / New Window + Redirect_to + Rails - PullRequest
3 голосов
/ 13 октября 2009

Можно перенаправить на некоторый URL-адрес контроллера и одновременно открыть URL-адрес в новом окне?

Ответы [ 3 ]

6 голосов
/ 13 октября 2009

Не совсем из действия контроллера.

Перенаправление - это HTTP-ответ с кодом состояния 301/302 и пустым телом в Rails. Поскольку тело пустое, у вас нет никакого способа включить дополнительную обработку для браузера (например, JavaScript и т. Д., Чтобы открыть новое окно).

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

Либо так, либо снова отобразите ту же страницу в виде обычного ответа (без перенаправления), и вставьте некоторый JavaScript при загрузке страницы для открытия нового окна

3 голосов
/ 28 января 2012

@ madlep "Лучше всего, чтобы это открылось в новом окне"

Спасибо за это. Работает отлично!

просмотр:

<%= link_to "Buy this product", buy_path, target: "_blank" %>

Контроллер:

def buy
  ...
  redirect_to link
end
1 голос
/ 12 января 2012

Немного искал и нашел решение ... его нет на контроллере (как я изначально тоже хотел, но это довольно просто ...) на ваш взгляд:

<%= link_to '', {:controller => 'assignments', :action => 'overall_report_gen', :evaluator_relations => @evaluator_relations}, :target => '_blank', :id => 'reporte' %>

<script language="JavaScript">
  document.getElementById('reporte').click();
</SCRIPT>

так, с '' в качестве строки отображения в link_to, вы получаете невидимую ссылку,

со ссылкой :target => '_blank', при нажатии открывается в новом окне

и :id => 'reporte' необходимы для того, чтобы перейти по ссылке с javascript.

так что просто поместите тот же идентификатор в link_to и в строку в javascript, и все

не забудьте поместить фрагмент кода javascript ПОСЛЕ link_to, чтобы дождаться загрузки элемента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...