的link_to没有路由匹配问题

问题描述:

我已经尝试使用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

问题是:title => post.title请尝试使用那里的post对象。

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

甚至更​​好

link_to post.title, post 

它认为,在路由它期待的格式为“.title伪”,而尚未配置。因为你的路由看起来像这样“/posts/test.title”,你可以不用“/ posts/test-title”,因为这对于大多数Web服务器来说是一个更好的URL结构?

如果你需要破解它,在轨道2,你可以用“:要求”这样的选项:

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

你链接的解决方案是最差的一个。覆盖rails内部以适应您的问题是错误的。我宁愿使用名为friendly_id的宝石,这会从你的ID创建一个URL证明slu slu。这很容易设置和使用。

https://github.com/norman/friendly_id