Как использовать помощник link_to, чтобы открыть всплывающее окно? - PullRequest
10 голосов
/ 06 марта 2011

Я просто хочу использовать link_to, чтобы открыть всплывающее окно. Я пытался что-то, но это не работает:

 <%= link_to 'Create a new company',
             new_company_path,
             :popup => ['create_company', 'height=600, width=600'] %> <br/>

Есть идеи?

Спасибо!

Ответы [ 5 ]

19 голосов
/ 12 января 2012

Добавьте это в ваш application.js.

$('a[data-popup]').on('click', function(e) { window.open($(this).attr('href')); e.preventDefault(); });

В представлении используйте что-то вроде:

= link_to( 'Create a new company', new_company_path, 'data-popup' => true )
10 голосов
/ 22 июля 2011
<%= link_to 'Create a new company',
         new_company_path, 
        :onclick=>"window.open(this.href,'create_company', 'height=600, width=600');return false;" 
%>
6 голосов
/ 06 марта 2011

Мой первый удар по этой проблеме, вероятно, будет выглядеть примерно так. Предполагается, что вы используете rails 3, jQuery и jquery-rails. Если нет, такой подход определенно не сработает. Точный код не проверен, поэтому пробег может отличаться. Я просто пытаюсь дать вам представление о том, как вы можете подумать о проблеме. Если вы хотите, чтобы я подробно рассказал о том, как это работает, или у вас есть вопросы, дайте мне знать, и я постараюсь объяснить.

Превратите вашу ссылку в пост ajax:

<%= link_to "Create a new company", new_company_path, :remote => true, :method => :post %>

В вашем контроллере ответьте шаблоном javascript:

def create
    @company = Company.new(params[:company])
    respond_to do |format|
       if @company.save
          format.js
       else
          format.js { render 'error' }
       end
    end
end

В views / companies / create.js.erb выполните JS, чтобы открыть новое окно.

window.open (<%= company_url(@company) %>, "mywindow","width=600,height=600");

И это должно более или менее сделать это, я думаю. У меня было несколько сортов пива, поэтому будьте осторожны.

2 голосов
/ 05 марта 2013

Если ваша цель - просто открыть ссылку в новом окне и вам не нужно управлять размерами / панелью инструментов / и т. Д., Вы также можете использовать старый добрый HTML:

<%= link_to 'Create a new company', new_company_path, :target => '_blank' %>
1 голос
/ 16 октября 2012

Это быстрое и грязное решение

<%= link_to 'Create a new company',
             '#', :onclick => "javascript:window.open(new_company_path,'popup','width=600,height=600');" %>
...