Ruby/Rails - Öffnen einer URL Aus Dem Controller In Neuem Fenster
Bin ich in meinen Anwendungen controller und ich habe eine url-Zeichenfolge. Wie sage ich der app zum öffnen der url im browser in einem neuen Fenster. Gibt es eine Möglichkeit, um das Ziel zu leeren?
Beispielsweise
def link
@url = 'www.google.com'
****??? Open @url ?? *** with target blank?
end
- Siehe auch stackoverflow.com/a/17685988/2917523 wenn Sie brauchen, um öffnen Sie eine url in das übergeordnete Fenster des controller-es ist nicht ideal, aber es ist möglich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist dies nicht möglich, direkt aus dem controller. Mit
redirect_to @url
hat den Effekt, dass das öffnen einer URL im selben "Fenster", da es einfach sendet ein HTTP-redirect-Anweisung an den browser zurück.redirect_to
ist nicht in der Lage, die neue Fenster öffnen. Der controller befindet sich auf der server-Seite, und öffnen Sie ein neues Fenster gehört zu der client-Seite.Einige Optionen:
a) machen einen link mit
<%= link_to 'Google', 'google.com', :target => '_blank' %>
oder<a href="google.com" target="_blank">Google</a>
die der Benutzer klicken kann, auf in eine neue Ansichtb) verwenden Sie JavaScript, um den link zu öffnen automatisch, aber Vorsicht, der Browser kann behandeln Sie dies als ein popup und blockiert es
Durch die Kombination dieser Optionen können Sie öffnen von links in neuen Fenster für die Browser/Benutzer, die es erlauben, und zurück auf eine normale URL in Fall, dass hat nicht funktioniert.
Als die anderen weisen darauf hin, Sie kann nicht (und sollte nicht) tun dies in den controller. In der Ansicht, die Sie verwenden können,
Gut, es ist nicht so, dass Sie NICHT tun, es ist einfach eine komplizierte Prozess. Ich Tat dies in einem Projekt an dem ich arbeite. Im Grunde ist es eine Mischung aus Schienen Güte und Javascript. Ich habe einfach übergeben Sie eine flash-Mitteilung die Schaffung einer Instanz, und dann verwendet Sie ein Skript festlegen, dass flash-Mitteilung gleich eine js-variable, und ein redirect_url. Wenn Sie, dass bestimmte flash-Benachrichtigung erscheint auf dieser Seite, leitet es in das js-script. Wie ich schon sagte, es ist hack hack hack, aber es funktioniert für meine Zwecke.
Können Sie nicht tun, dass in den Schienen, da Ihr Skript ausgeführt wird, auf einem server.
Verwenden Sie Javascript, um die Arbeit mit dem browser auf der client-Seite.