我有一个课程
我希望每封帖子的默认网址为http://domain.com/9383,而不是http://domain.com/posts/9383
我试图在路线中修复它。我设法接受domain.com/222但是如果我使用<%= url_for(@ postts)%>我仍然得到domain.com/posts/222
我该怎么办?谢谢
答案 0 :(得分:5)
您无法使用路线更改url_for(@post)
的行为。如果向url_for
实例传递了map.resources
,ActiveRecord
将采用# routes.rb
map.post ":id", :controller => "posts", :action => "show"
# named route
post_path(@post)
# full link_to
link_to @post.title, post_path(@post)
设置。
你应该这样做:
{{1}}
答案 1 :(得分:0)
如果您使用url_for
,则无法告诉它省略/posts/
部分。我想你需要创建帮助器,可能在application_helper.rb
def post_url(post)
"/#{post.id}"
end
答案 2 :(得分:0)
覆盖url_for
似乎不被视为Rails中的最佳做法,尽管对我来说似乎非常方便。以下是自定义ApplicationController
:http://arjanvandergaag.nl/blog/generating-fancy-routes-with-rails.html