Ruby Heroku Rails应用程序仅在生产中引发资源显示操作的路由错误

Ruby Heroku Rails应用程序仅在生产中引发资源显示操作的路由错误,ruby,ruby-on-rails-3,heroku,routing,scaffolding,Ruby,Ruby On Rails 3,Heroku,Routing,Scaffolding,我在Heroku上托管了一个Rails 3.2应用程序,在本地开发了一个新的博客资源后,由于某种原因,它在我的Heroku登台应用程序上遇到了问题,抛出了一个错误 Started GET "/blog_posts" for 24.16.156.31 at 2014-09-16 01:27:59 +0000 Rendered blog_posts/index.html.haml within layouts/application (25.9ms) ActionController::

我在Heroku上托管了一个Rails 3.2应用程序,在本地开发了一个新的博客资源后,由于某种原因,它在我的Heroku登台应用程序上遇到了问题,抛出了一个错误

 Started GET "/blog_posts" for 24.16.156.31 at 2014-09-16 01:27:59 +0000
   Rendered blog_posts/index.html.haml within layouts/application (25.9ms)

 ActionController::RoutingError (No route matches {:action=>"show",  :controller=>"blog_posts", :id=>nil}):
 app/views/blog_posts/index.html.haml:89:in `_app_views_blog_posts_index_html_haml___3120682798112947929_70212833553560'
 app/controllers/blog_posts_controller.rb:10:in `index'
然而当我跑的时候

heroku run rake routes
显示我能清楚看到的所有可用路线

                       blog_posts GET        /blog_posts(.:format)                                            blog_posts#index
                                  POST       /blog_posts(.:format)                                            blog_posts#create
                    new_blog_post GET        /blog_posts/new(.:format)                                        blog_posts#new
                   edit_blog_post GET        /blog_posts/:id/edit(.:format)                                   blog_posts#edit
                        blog_post GET        /blog_posts/:id(.:format)                                        blog_posts#show
                                  PUT        /blog_posts/:id(.:format)                                        blog_posts#update
                                  DELETE     /blog_posts/:id(.:format)                                        blog_posts#destroy
在我的routes.rb文件的顶部

resources :blog_posts
我唯一能想到的是,当我继承了这个项目并开始为博客生成脚手架时,它创建了blog\u post\u类型的控制器

class BlogPostsController < InheritedResources::Base
有什么想法吗

编辑:

blog_posts_controller.rb显示和索引操作

def index
    @blog_posts = BlogPost.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @blog_posts }
    end
  end

  # GET /blog_posts/1
  # GET /blog_posts/1.json
  def show
    @blog_post = BlogPost.find(params[:id])
    hash = session.exists?
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @blog_post }
    end
  end
此外,正在访问的URL是

http://app.herokuapp.com/blog_posts
它应该触发索引操作,而不是显示

当我尝试点击blog_posts/1,其中1是有效的blog_post id时,我得到

Parameters: {"id"=>"1"}
Rendered blog_posts/show.html.haml within layouts/application (31.9ms) 
ActionController::RoutingError (No route matches {:action=>"show", :controller=>"blog_posts", :id=>nil}):
routes.rb

resources :blog_posts

您尝试使用不存在的BlogPost构建url。您是否仔细检查了生产数据库中是否存在id为1的BlogPost?您是否加载了传递给url助手的记录,或者是否对该id进行了硬编码?

您是否可以发布
索引和
显示视图,因为这是发生错误的地方。您的
routes.rb中是否有更多的路由?您能显示其他路由定义吗?如果错误源于索引,并显示为什么它在本地工作得很好,但在生产Heroku应用程序中却不工作?stacktrace告诉我们问题发生在
app/views/blog\u posts/index.html.haml:89
中。由于您没有发布该文件,而且视图中的行号有时会导致错误的方向,因此很难回答这个问题。您是否仔细检查了生产数据库中是否存在id为1的BlogPost?您是否加载了传递给url助手的记录,或者您对该id进行了硬编码?非常感谢,事实证明我访问的是一个尚未存在的硬编码博客id。请写一个简短的回答,这样我就可以接受了。
Parameters: {"id"=>"1"}
Rendered blog_posts/show.html.haml within layouts/application (31.9ms) 
ActionController::RoutingError (No route matches {:action=>"show", :controller=>"blog_posts", :id=>nil}):
resources :blog_posts