没有路由匹配错误但rake路由找到它,Rails.application.routes识别它

时间:2012-12-29 20:03:08

标签: ruby-on-rails routes

奇怪的是,当我将“resources:blogs”包含到我的routes.rb时,我尝试触及的任何其他路径都出现以下错误:

No route matches {:action=>"show", :controller=>"blogs"}

我唯一没有得到此错误的路径是“/blogs/:id(.:format)”本身。

Rake路线(“显示”第5行“博客”):

    blogs GET    /blogs(.:format)          blogs#index
          POST   /blogs(.:format)          blogs#create
 new_blog GET    /blogs/new(.:format)      blogs#new
edit_blog GET    /blogs/:id/edit(.:format) blogs#edit
     blog GET    /blogs/:id(.:format)      blogs#show
          PUT    /blogs/:id(.:format)      blogs#update
          DELETE /blogs/:id(.:format)      blogs#destroy
  root           /                         pages#home
     home        /home(.:format)           pages#home
 products        /products(.:format)       pages#products
 services        /services(.:format)       pages#services
 research        /research(.:format)       pages#research
                 /blog(.:format)           pages#blog
  contact        /contact(.:format)        pages#contact

另一方面,当在控制台中尝试时,“/ products”(例如)中没有这样的错误,其中在浏览器中返回“无路由匹配”错误:

1.9.3p327 :010 > Rails.application.routes.recognize_path "/products"
=> {:controller=>"pages", :action=>"products"} 
1.9.3p327 :011 > Rails.application.routes.recognize_path "/blogs/1"
=> {:action=>"show", :controller=>"blogs", :id=>"1"}

有什么想法吗?

更新

这是我的blogs_controller.rb:

class BlogsController < ApplicationController
  def show
    @blog = Blog.find(params[:id])
  end

  def new
  end
end

和我的博客show.html.erb:

<%= @blog.title %>, <%= @blog.description %>

到目前为止,这是我为测试我的Blog模型而开发的所有内容。

1 个答案:

答案 0 :(得分:1)

最有可能的是,你有类似

的东西
<%= link_to "Blogs", blog_path =>
布局模板中的

。如果是,请将其更正为<%= link_to "Blogs", blogs_path =>