2011-10-21 124 views
8

私は自分のアプリケーションコントローラにいて、私はURL文字列を持っています。新しいウィンドウでブラウザにURLを開くようにアプリに指示するにはどうすればよいですか?ターゲットを空白にする方法はありますか?例えばRuby/Rails - 新しいウィンドウでコントローラからURLを開く

def link 
    @url = 'www.google.com' 
    ****??? Open @url ?? *** with target blank? 
end 
+0

コントローラから_parent_ウィンドウにURLを開く必要がある場合は、https://stackoverflow.com/a/17685988/2917523も参照してください。理想的ではありませんが、可能です。 –

答えて

9

これは、コントローラから直接することは不可能です。 redirect_to @urlを使用すると、ブラウザにHTTPリダイレクト命令を送信するだけで、同じ「ウィンドウ」にURLを開くことができます。 redirect_toは新しいウィンドウを開くことができません。コントローラはサーバ側にあり、新しいウィンドウを開くことはクライアント側に属します。

いくつかのオプション:

a)は、ユーザーが新しいビュー

b)はJavaScriptが自動的にリンクを開くが、ブラウザが扱うことを用心して使用中にクリックすることができます<%= link_to 'Google', 'google.com', :target => '_blank' %>または<a href="google.com" target="_blank">Google</a>とのリンクをレンダリングこれをポップアップとしてブロックする

これらのオプションを組み合わせることで、許可したブラウザ/ユーザーの新しいウィンドウでリンクを開くことができ、動作しなかった場合は通常のURLに戻ることができます。

+0

通常のリンク、つまり<%= link_to 'Google'、 'http://www.google.com'、:target => '_blank'%>またはGoogle

+0

回答を変更しないのはなぜですか? – mliebelt

0

あなたのスクリプトはサーバー上で実行されているため、これをレールで行うことはできません。 Javascriptを使用すると、クライアント側のブラウザで作業できます。

4

他の人が指摘しているように、コントローラでこれを行うことはできません。ビューでは、

<%= link_to @url, :target => "_blank" %> 
3

まあを使用することができ、それはないあなたががそれを行うことができないことだ、それだけの種類の複雑なプロセスです。私が取り組んでいるプロジェクトでこれをしました。基本的には、Railsの良さとJavascriptが混在しています。インスタンスの作成時にフラッシュ通知を渡しただけで、そのフラッシュ通知をjs変数およびredirect_urlに等しく設定するスクリプトを使用しました。その特定のフラッシュ通知がそのページでポップアップすると、jsスクリプトでリダイレクトされます。私が言ったように、それはハックハックハックですが、それは私の目的のために動作します。

関連する問題