11

我只是想用来link_to打开一个弹出窗口。我尝试了一些东西,但它不起作用:

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

任何想法?

谢谢!

4

5 回答 5

19

将此添加到您的 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 )
于 2012-01-12T00:56:28.027 回答
11
<%= link_to 'Create a new company',
         new_company_path, 
        :onclick=>"window.open(this.href,'create_company', 'height=600, width=600');return false;" 
%>
于 2011-07-22T03:39:12.590 回答
6

我对这个问题的第一次尝试可能看起来像这样。它假设您使用的是 rails 3、jQuery 和 jquery-rails。如果你不是,这种方法肯定行不通。此确切代码未经测试,因此您的里程可能会有所不同。我只是想告诉你你可能想如何思考这个问题。如果您希望我详细说明这是如何工作的,或者有任何疑问,请告诉我,我会尽力解释。

把你的 link_to 变成一个 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");

我认为这或多或少应该做到这一点。我喝了几杯啤酒,所以请谨慎行事。

于 2011-03-06T04:20:50.090 回答
2

如果您的目标只是在新窗口中打开链接并且您不关心管理尺寸/工具栏/等,您也可以使用良好的旧 HTML:

<%= link_to 'Create a new company', new_company_path, :target => '_blank' %>
于 2013-03-04T22:32:33.553 回答
1

这是快速而肮脏的解决方案

<%= link_to 'Create a new company',
             '#', :onclick => "javascript:window.open(new_company_path,'popup','width=600,height=600');" %>
于 2012-10-16T14:27:35.970 回答