這可能嗎?乾淨的URL在to_param中使用正斜槓'/'與Rails(3)
def to_param
"#{id}%2F#{slug}"
end
這適用於Chrome和Safari,但是如果Firefox在地址欄中看到「%2F」。有更清潔的方法嗎?
這可能嗎?乾淨的URL在to_param中使用正斜槓'/'與Rails(3)
def to_param
"#{id}%2F#{slug}"
end
這適用於Chrome和Safari,但是如果Firefox在地址欄中看到「%2F」。有更清潔的方法嗎?
在節中的「重定向方法」這確實是一個古老的職位,但我想要建立一點。
如果你不想在你的PARAMS來處理廢料的變量,你真的需要定義模型
def to_param "#{id}/#{title}" end
該方法to_param並設置路徑,像這樣:
resources :posts, :id => /[0-9]+\/.+/
這樣,你的鏈接定義長得挺像一個正常:
link_to post.title, post_url(post)
很簡單:http://www.miguelsanmiguel.com/2011/03/17/slug-that-slash
在rails 3中是否有任何可能會導致此問題的內容?我無法使用您的確切代碼來運行它。 – brittohalloran 2012-06-13 15:15:41
順便說一句 - 它在'to_param'方法中使用「 - 」或「_」很好,但當我去「/」時會中斷(我當然必須相應地編輯正則表達式) – brittohalloran 2012-06-13 15:28:07
首先:上面的代碼運行在Rails3中。第二:在你的slu having(帖子標題)中有一個斜槓不是一個好主意,因爲它代表了一個URL的更深層次,並且它與嵌套資源不兼容,所以你應該以某種方式替代它。實際上,我們應該使用任何[保留的URL字符](http://www.blooberry.com/indexdot/html/topics/urlencoding.htm)。我建議像這樣:'def to_param; 「#{ID}/{#} name_without_reserved_url_characters」; end'。好點! – miguelsan 2012-06-25 14:59:32
看看Friendly ID - 它會完全消除ID,只是使用slu。。 Rails 3也是兼容的。
好,我想這只是那麼現在就需要這樣的:
def to_param
"#{id}/#{slug}"
end
在routes.rb中(更換你想要什麼和你需要什麼)
match "/expenses/:id/:slug" => "expenses#show", :as => :expense
你的link_to應該像這個現在
= link_to "something", expense_url(:id => expense.id, :slug => expense.slug)
希望這有助於有點
也許這樣的事情可以幫助
match "/foo/:id", :to => redirect("/bar/%{id}s")
你看看這篇文章Rails3中和路線
http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/
你究竟在做什麼? – 2010-07-27 21:47:04
試圖在使用「id/slug」而非「id-slug」格式的rails中實現乾淨的URL – 2010-07-30 14:59:22