的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"}
但是,如果没有包括期间,一切正常。
任何人都可以帮助我吗?
答
问题是: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。这很容易设置和使用。
你是什么意思“包含点”?你的意思是一段时间('.')? – 2011-04-11 04:25:39