我正在设置我的网站
www.website.com/articles/2013/07
将列出2013年7月份的所有文章
www.website.com/articles/2013
将列出2013年的所有文章
www.website.com/articles/2013/07/title-of-article
将仅列出具体文章
但是,我只能获得上述3中的第一个和最后一个。输入网址
www.website.com/articles/2013
无法正常运作。具体来说,我得到的noMethodError in Articles#show
对我来说没有意义,因为我已将路线与Articles#index
匹配。
有人可以解释一下这里发生了什么吗?我不知道我在哪里弄错了。
路线:
match "/articles/:year", :to => "articles#index",
:constraints => { :year => /\d{4}/ }, :as=> :posts_year
match "/articles/:year/:month", :to => "articles#index",
:constraints => { :year => /\d{4}/, :month => /\d{1,2}/ }, :as => :posts_month
match "/articles/:year/:month/:slug", :to => "articles#show",
:constraints => { :year => /\d{4}/, :month => /\d{1,2}/, :slug => /[a-z0-9\-]+/ }, :as => :posts_date
在我的模型中我有:
def year
created_at.year
end
def month
created_at.strftime("%m")
end
答案 0 :(得分:1)
你的路线文件中有resources :articles
吗?如果这样做,那就解释了错误。将resources :articles
移到问题中提到的路线下方,一切都应该正常。或者,您可以将其更改为:
resources :articles, :except => :show
答案 1 :(得分:0)
猜测如果您将文章定义为资源,则默认的show /:id路由优先于您的:posts_year路由。也许试试resources :articles, :except => [:show]