Ruby Heroku Rails应用程序仅在生产中引发资源显示操作的路由错误
我在Heroku上托管了一个Rails 3.2应用程序,在本地开发了一个新的博客资源后,由于某种原因,它在我的Heroku登台应用程序上遇到了问题,抛出了一个错误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::
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