0

我正在尝试使用参数化重写 URL,如下所述:如何根据标题重写 URL?

这是我的模型:

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"but I have这样的链接/blog/article."my-article-title",这是错误的,没有被解释。

你知道原因吗?

我的 route.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

谢谢

4

1 回答 1

0

使用link_to传递资源的方式仅在您实际使用路由文件中的资源时才真正起作用。

这是使用非资源路由和由资源生成的路由的区别(rake 路由输出):

blog_article GET    /blog/article(.:format)

article GET    /articles/:id(.:format)

使用article_path(@article)时会填写:id资源的id。

我建议您使用文章控制器的显示操作,这样您就可以拥有/blog/articles/:id或者如果您真的想要该路由,您可以执行以下操作:

get "blog/article/:id" => "articles#show", :as => 'blog_article'

变成:

blog_article GET    /blog/article/:id(.:format)

官方指南对此有一些很好的信息。

于 2013-03-25T14:27:06.703 回答