如何使用link_to helper打开弹出窗口?

Amo*_*tir 10 popup link-to ruby-on-rails-3

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

 <%= link_to 'Create a new company',
             new_company_path,
             :popup => ['create_company', 'height=600, width=600'] %> <br/>
Run Code Online (Sandbox Code Playgroud)

任何的想法?

谢谢!

Mar*_*rom 19

将其添加到您的application.js.

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

在视图中,使用以下内容:

= link_to( 'Create a new company', new_company_path, 'data-popup' => true )
Run Code Online (Sandbox Code Playgroud)

  • 到目前为止最优雅的 - 特别是如果你添加类似 data-options='height=600, width=600' 的东西 (2认同)

Vik*_*rón 10

<%= link_to 'Create a new company',
         new_company_path, 
        :onclick=>"window.open(this.href,'create_company', 'height=600, width=600');return false;" 
%>
Run Code Online (Sandbox Code Playgroud)


Jos*_*den 6

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

将您的link_to转换为ajax帖子:

<%= link_to "Create a new company", new_company_path, :remote => true, :method => :post %>
Run Code Online (Sandbox Code Playgroud)

在您的控制器中,使用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
Run Code Online (Sandbox Code Playgroud)

在views/companies/create.js.erb中,执行JS以打开新窗口.

window.open (<%= company_url(@company) %>, "mywindow","width=600,height=600");
Run Code Online (Sandbox Code Playgroud)

我想,这应该或多或少地做到这一点.我喝了几瓶啤酒,所以请谨慎行事.