两个模型导轨之间的冲突



我有两个模型postproduct

这是我的后控制器

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 并在您继续之前仔细检查您的路线。

最新更新