2011-10-21 28 views
8

Tôi đang ở trong bộ điều khiển ứng dụng và có chuỗi url. Làm cách nào để yêu cầu ứng dụng mở url trong trình duyệt trong cửa sổ mới. Có cách nào để đặt mục tiêu để trống không?Ruby/Rails - Mở một URL từ Bộ điều khiển Trong Cửa sổ mới

Ví dụ

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

Xem thêm https://stackoverflow.com/a/17685988/2917523 nếu bạn cần mở url trong cửa sổ _parent_ từ trình điều khiển - nó không lý tưởng, nhưng có thể. –

Trả lời

9

Đây là không thể trực tiếp từ bộ điều khiển. Sử dụng redirect_to @url có tác dụng mở url trong cùng một "cửa sổ", vì nó chỉ gửi một hướng dẫn chuyển hướng HTTP trở lại trình duyệt. redirect_to không có khả năng mở cửa sổ mới. Bộ điều khiển nằm ở phía máy chủ và mở một cửa sổ mới thuộc về phía máy khách.

Một số tùy chọn:

a) làm cho một liên kết với <%= link_to 'Google', 'google.com', :target => '_blank' %> hoặc <a href="google.com" target="_blank">Google</a> mà người dùng có thể nhấp vào trong một cái nhìn mới

b) sử dụng JavaScript để mở liên kết tự động, nhưng hãy cẩn thận mà các trình duyệt có thể điều trị này làm cửa sổ bật lên và chặn nó

Bằng cách kết hợp các tùy chọn này, bạn có thể mở liên kết trong cửa sổ mới cho trình duyệt/người dùng cho phép và quay lại URL thông thường trong trường hợp không hoạt động.

+0

Chỉ cần một liên kết bình thường, tức là <% = link_to 'Google', 'http://www.google.com',: target => '_blank'%> hoặc Google

+0

Tại sao không thay đổi câu trả lời của bạn? – mliebelt

0

Bạn không thể làm điều đó trong đường ray vì tập lệnh của bạn đang được thực hiện trên máy chủ. Sử dụng Javascript để làm việc với trình duyệt ở phía máy khách.

4

Khi những người khác chỉ ra, bạn không thể (và không nên) làm điều này trong bộ điều khiển. Trong giao diện bạn có thể sử dụng

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

Vâng, nó không phải là bạn KHÔNG THỂ làm điều đó, nó chỉ là loại một quá trình phức tạp. Tôi đã làm điều này trong một dự án tôi đang làm việc. Về cơ bản, đó là một hỗn hợp của Rails goodness và Javascript. Tôi chỉ đơn giản là thông qua một thông báo flash về việc tạo ra một thể hiện, và sau đó sử dụng một kịch bản để thiết lập thông báo flash đó bằng một biến js và một redirect_url. Nếu thông báo flash cụ thể bật lên trên trang đó, nó sẽ chuyển hướng trong tập lệnh js. Như tôi đã nói, đó là hack hack hack, nhưng nó hoạt động cho mục đích của tôi.

Các vấn đề liên quan