参数化错误的网址

时间:2013-03-25 14:03:39

标签: ruby-on-rails url-rewriting parameterized

我正在尝试使用参数化进行网址重写,如下所示: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

由于

1 个答案:

答案 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有一些很好的信息。