我有一个在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_post_controllerclass BlogPostsController < InheritedResources::Base
而不是正常的
class BlogPostsController < ApplicationController
具有您可以更改的所有明确定义的show,index,new,edit等操作。
因此,为了使脚手架返回到ApplicationController,我将这行添加到application.rb
config.app_generators.scaffold_controller = :scaffold_controller
有什么想法吗?
编辑:
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
答案 0 :(得分:1)
您尝试使用不存在的BlogPost构建网址。您是否仔细检查生产数据库中是否存在ID为1的BlogPost?您是否加载了传递给您的网址助手的记录,或者您是否对该ID进行了硬编码?