我正在尝试使用参数化进行网址重写,如下所示:How do I rewrite URL's based on title?
这是我的模特:
class Article < ActiveRecord::Base
belongs_to :category
self.per_page = 5
def to_param
"#{title.parameterize}"
end
end
我的链接:
<%= link_to(article.title, blog_article_path(article), {:class => "blog_title"}) %>
问题在于我没有像/blog/article/"my-article-title"
这样的链接,但我有/blog/article."my-article-title"
,这是错误的,没有解释。
你知道原因吗?
我的路线.rb:
get "blog/index"
get "blog/category"
get "blog/article" (I don't use the show action of my article controller, is it the reason ?)
resources :categories
resources :articles
由于
答案 0 :(得分:0)
只有在路径文件中实际使用资源时,才能通过传递资源的方式使用link_to
。
这是使用非资源路由和资源生成的路径的差异(rake路由输出):
blog_article GET /blog/article(.:format)
article GET /articles/:id(.:format)
当您使用article_path(@article)
时,它会使用资源的ID填充:id
。
我建议你使用文章控制器的show动作,这样你就可以/blog/articles/:id
,或者如果你真的想要这样的路由,你可以做这样的事情:
get "blog/article/:id" => "articles#show", :as => 'blog_article'
变成:
blog_article GET /blog/article/:id(.:format)
official guides有一些很好的信息。