2015-06-09 40 views
3

我試圖在我的Rails應用程序中構建一個視圖,該鏡像可以映射外部網站上的頁面。所以基本上,不是鏈接到外部頁面,該外部頁面將顯示在我的視圖中。如何在我的導軌視圖中顯示外部站點?

有沒有辦法做到這一點,而不使用iFrame或是唯一的方法?

回答

4

您可以使用Javascript從外部網站加載內容,並將其顯示在您的視圖中。

下面是代碼:

<script> 
    $("#externalSiteContent").load("http://www.example.com/index.html"); 
</script> 
<div id="externalSiteContent"></div> 
+0

這個很好用! – user3317171

+0

如果您認爲答案適合您,並且是最好的,您可以接受它。 –

+1

所以這適用於一些網站,但大多數網站,我遇到了CORs問題:我得到這個錯誤:XMLHttpRequest無法加載「外部網站」。請求的資源上沒有「Access-Control-Allow-Origin」標題。原因'http:// localhost:3000'因此不被允許訪問。該響應具有HTTP狀態碼404。是否有解決方法? – user3317171

2

這是一個全軌的方法:

class YahooController < ApplicationController 

    layout false 

    def show 
    url = URI.parse('http://www.yahoo.com/') 
    req = Net::HTTP::Get.new(url.to_s) 
    res = Net::HTTP.start(url.host, url.port) {|http| 
     http.request(req) 
    } 

    @body = res.body 
    end 

end 

在視圖

# views/yahoo/show.html.haml 
= @body.html_safe 

當然,你需要一個路線對此。

# routes.rb 
get '/yahoo', :to => 'yahoo#show' 
+0

這樣做似乎並沒有加載外部網站的資產 – user3317171

+0

他們是相對的,你需要更新相關的網址。 – Swards

+1

解決這個問題的另一種方法是在頭標籤中添加一個基本標籤。 – Swards

相關問題