2014-08-28 23 views
0

我正在構建組織內部使用的rails應用程序。在新選項卡/窗口上打開LOCAL客戶端路徑 - Rails

所有客戶機驅動器映射到共享文件夾,全部由相同的路徑,它看起來像訪問: file://emc01a/projects/.../HTML_Report/index.html

現在

,我使用了下面這樣的塊嘗試:

<%= link_to "Click here to view the report", @test_meta.test_log, target: "blank" %> 

這會生成正確的鏈接,但應用程序根本沒有響應。

接下來,我想:

<%= link_to "Click here to view the report", "http://"[email protected]_meta.test_log, target: "blank" %> 

本作的差別,現在一個新的選項卡打開,但因爲它是翻譯的路徑不工作:emc01a/projects/.../HTML_Report/index.html,無法通過瀏覽器來解決實際路徑。

我也試過:

<%= link_to "Click here to view the report", "http://file:"[email protected]_meta.test_log, target: "blank" %> 

這給我帶來了file//emc01a/projects/.../HTML_Report/index.html

如此接近,但我沒能工作還沒有。

有什麼想法嗎? :)

+0

「target」的值應該是「_blank」而不是「空白」 – 2014-08-28 08:53:43

+0

這個@文件路徑將被解釋爲@file的值減去路徑的值是什麼你想要做什麼?如果它是單個變量,則將其重命名爲「@ file_path」(減號不是用於變量/方法名稱的有效字符) – 2014-08-28 08:55:16

+0

這兩個選項都會根據請求創建一個新選項卡,但它不適用於所需的文件路徑。 – cyber101 2014-08-28 08:56:26

回答

0

其實我認爲上述問題(在我的意見)是分心,真正的問題是一個安全問題:默認情況下,您的瀏覽器是沙盒,不能從本地文件系統讀取文件(文件://鏈接指向)。

我覺得處理這個問題的方法是把一個符號鏈接到共享文件夾中的Rails應用程序的公共文件夾中,然後就可以從應用中投放從共享文件夾文件,就好像它們是任何其他資產。

例如,在終端,在你的軌道根文件夾

ln -s /path/to/the/shared/folder public/shared 

例如,如果共享文件夾爲「/ emc01a /項目」你可以像這樣的符號鏈接到文件夾:

ln -s /emc01a/projects public/shared 

現在,您可以通過subsituting /shared/emc01a/projects鏈接到本文件file://emc01a/projects/HTML_Report/index.html

<%= link_to "Click here to view the report", "/shared/HTML_Report/index.html", target: "_blank" %> 

編輯:一旦你有這個工作,你可以更有效地做到這一點,通過設置配置nginx/apache /任何-http-server-you-use直接提供文件而不是通過rails 。如果只是爲了一個內部網站,這可能沒有必要。

+0

剛剛意識到我有錯誤的方向'ln -s'的參數,對不起!編輯。 – 2014-08-28 09:16:09

+0

謝謝。安全方面可以非常解釋這種行爲。但是,就我所見,這種解決方案只生成一個有效的url,這使我能夠始終使用第一條命令生成一個有效的url:'<%= link_to「單擊此處查看報告」@test_meta。 test_log,target:「_blank」' – cyber101 2014-08-28 10:45:58

+0

我的觀點是,以「file://」開頭的url是問題所在。如果您的網址是「http:// example.com/shared/foo.txt」,那麼它將有效地從您的應用程序的公用文件夾中提供,這是所有資產所在的位置。 – 2014-08-28 13:06:02

相關問題