我有两个模型post
和product
这是我的后控制器
before_action :seo_url,only: [:show]
def product_list
if params[:product_id] == 1
@products = Product.All
end
respond_to do |format|
format.json { render json: @products.id }
end
end
private
def seo_url
@post = Post.friendly.find params[:id]
end
这是我的阿贾克斯电话
$.ajax({
type: "GET",
url: '/posts/product_list.json',
data: {product_id: 1},
dataType: 'json'
});
我的控制台抛出了这样的东西。我不明白发生了什么,任何人都可以帮忙
Parameters: {"product_id"=>"1", "_"=>"1380659219433", "id"=>"product_list"}
Post Load (0.9ms) SELECT "posts".* FROM "posts" WHERE "posts"."slug" = 'product_list' ORDER BY "posts"."id" ASC LIMIT 1
Completed 404 Not Found in 5ms
ActiveRecord::RecordNotFound (ActiveRecord::RecordNotFound):
app/controllers/posts_controller.rb:85:in `seo_url'
编辑-1
Processing by PostsController#product_list as JSON
Parameters: {"product_id"=>"1"}
Completed 500 Internal Server Error in 3ms
NoMethodError (undefined method `id' for nil:NilClass):
/posts/product_list
被解释为"使用"product_list"id
调用控制器中的show
方法,而不是"调用product_list
方法"。
这是因为您的config/routes.rb
文件。您需要告诉它您的product_list
方法。像这样:
resources :posts do
get "product_list", on: :collection
end
代码中有一些非标准的概念。
您的问题的简单答案是找不到 id = "product_list" 的帖子。我假设您已将主键从 id 更改?
查看活动记录文档 - http://guides.rubyonrails.org/active_record_querying.html#retrieving-a-single-object
长答案将涉及询问为什么您的 RESTful get 路由的 id 为"product_list"。我会重新访问 http://guides.rubyonrails.org/routing.html 并在您继续之前仔细检查您的路线。