2011-10-13 39 views
0

我有一個需要處理路徑信息的應用程序(它將與服務器上的文件一起工作)。這就是我想要做的路線。我怎樣才能在軌道中包含unix路徑信息link_to

match "viewfile/file=:vFile" => "home#viewfile" 

,這裏是我怎樣,我想鏈接到的文件

link_to("file", 
     { :controller => "home", :action => "viewfile", :vFile => "/this/is/a/test" }) 

然而,這引發錯誤並不起作用。

我該怎麼做?

+0

你可以添加堆棧跟蹤嗎?像'='和':'這樣的字符的語法對我來說似乎是可疑的。 – mliebelt

+0

@mliebelt這是rails語法的標準ruby。 http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html但是,我會添加追蹤。 – Cogman

回答

1
link_to("file", { ... url_encode("/this/is/a/test/") }) 

更容易的工作。

+0

等號不會引起任何問題。如果我將測試路徑更改爲「thisIsATest」,則路由正確。 URL中存在正斜槓是這裏的問題。 – Cogman

+0

剛剛嘗試過。 url_encode是解決方案。謝謝。 – Cogman

+0

啊,我會刪除等號注。真高興你做到了。有些角色在路線上似乎不太好,我認爲等號是其中之一。 – Travis

0

問題是路由不知道是匹配的路由,因爲多個路由可以匹配你的控制器/動作/ vFile組合,所以名稱,如路線:

match "viewfile/file=:vFile" => "home#viewfile", :as => 'viewfile' 

現在你可以使用viewfile_path幫手

link_to 'file', viewfile_path("/this/is/a/test") 

PS:我不知道,如果它在URL中的等號(=)符號的作品,什麼絕對的工作原理是:

match "viewfile/file/:vfile" => "home#viewfile", :as => 'viewfile' 
link_to 'file', viewfile_path("/this/is/a/test") 

但試試看......