2016-06-08 65 views
1

我想製作應用程序,將網頁日文翻譯成英文的詞彙。 但firstable我想開始形式只是單純的展示頁面內嵌慾望像谷歌的所需的URL轉換。(See here顯示所需的網頁內聯網址,並替換html代碼,如Google Translate

我試圖用開放的URI庫,並從網頁HTML內容,並與下面的代碼顯示。

控制器:

def submit 
    require 'open-uri' 

    charset = nil 
    @html = open(params[:url]) do |f| 
     charset = f.charset 
     f.read 
    end 
end 

查看:

<%= @html.html_safe %> 

但我有問題,這一點,這根本不會加載圖片和一些樣式表的頁面。 任何方式來顯示圖像和CSS?

回答

2

如果您在域中顯示來自其他域的HTML,那麼HTML中使用的任何相對URL(鏈接,腳本,樣式等)都不會與您域中存在的文件相對應。您將不得不解析HTML,並將URL擴展爲指向原始域的完整URL(更簡單),否則您將不得不使用相同的路徑結構將所有內容下載到您的域。

實施例:

爲了顯示圖像,一個位點(example.com)可以使用下列任何的src屬性:

<img src="http://example.com/images/logo.jpg" alt="My Logo" /> 
<img src="/images/logo.jpg" alt="My Logo" /> 
<img src="../../images/logo.jpg" alt="My Logo" /> 

如果站點總是在第一次使用的完整URL等例如,您不會遇到顯示圖像的問題。如果他們使用第二個,您的網站將無法在您的服務器上找到「/images/logo.jpg」。你將不得不解析所有的img元素,並預先給域。第三個例子,你將不得不做更多的工作,根據你顯示的當前URL確定圖像的路徑。

+0

你是什麼意思?對不起,我剛剛開始學習rails。 –

+0

我用一個例子更新了我的答案。 – Rick

+0

我明白了。非常感謝你的非常詳細的解釋! ;) –