2011-04-11 60 views
0

我已經嘗試使用link_to像這樣:(。)的link_to沒有路由匹配問題

<%= link_to post.title, {:controller => 'posts', :action => 'show', :id => post.title}, :title => post.title %> 

如果標題包含一個時期,我得到以下錯誤:

No route matches {:controller=>"posts", :action=>"show", :id=>"test.title"} 

但是,如果沒有包括期間,一切正常。

任何人都可以幫助我嗎?

我找到了解決方案。 http://www.ruby-forum.com/topic/101911#222985

+0

你是什麼意思「包含點」?你的意思是一段時間('.')? – 2011-04-11 04:25:39

回答

1

問題是:title => post.title請嘗試使用那裏的post對象。

link_to post.title, :controller => 'posts', :action => 'show', :id => post 

甚至更​​好

link_to post.title, post 
0

它認爲,在路由它期待的格式爲「.title僞」,而尚未配置。因爲你的路由看起來像這樣「/posts/test.title」,你可以不用「/ posts/test-title」,因爲這對於大多數Web服務器來說是一個更好的URL結構?

如果你需要破解它,在軌道2,你可以用「:要求」這樣的選項:

map.connect '/post/:id/:title', :controller => 'forum', :action => 'show_post', :requirements => { :title => /.*/ }

1

你鏈接的解決方案是最差的一個。覆蓋rails內部以適應您的問題是錯誤的。我寧願使用名爲friendly_id的寶石,這會從你的ID創建一個URL證明slu slu。這很容易設置和使用。

https://github.com/norman/friendly_id

相關問題