我有两个模型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电话
$.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):
答案 0 :(得分:1)
/posts/product_list
被解释为“使用show
”product_list“调用控制器中的id
方法,而不是”调用product_list
方法“。
这是因为您的config/routes.rb
文件。您需要告诉它您的product_list
方法。像这样:
resources :posts do
get "product_list", on: :collection
end
答案 1 :(得分:0)
您的代码中有一些非标准概念。
您的问题的简单答案是无法找到id =“product_list”的帖子。我假设你已经从id更改了主键?
查看ActiveRecord文档 - http://guides.rubyonrails.org/active_record_querying.html#retrieving-a-single-object
长答案将涉及询问为什么RESTful get路由的id为“product_list”。我会重新访问http://guides.rubyonrails.org/routing.html并在继续之前仔细检查您的路线。