4

我正在开发一个提供一些 json 的 rails 应用程序,我很难理解下面的代码中发生了什么(为了理解问题而进行了简化)。

module Api
  class ProjectController < ApplicationController
    respond_to :json

    def show
       x = {"id"=>17, "name"=>"abc", "version"=>1}
       respond_with x.to_json, status: 200
    end

    def create
      x = {"id"=>17, "name"=>"abc", "version"=>1}
      respond_with x.to_json, status: 200
    end
  end
end

显示操作工作正常,但是当我调用创建操作时,我得到了

NoMethodError(未定义的方法 '{"id":17,"name":"abc","version":1}_url' 用于 Api::ProjectsController:0x007fbb2294cd18)

为什么我在 show 工作正常时收到此错误?是因为 create 发帖而不是 get 吗?

我该如何解决?

感谢您的帮助,祝您有愉快的一天。

4

1 回答 1

2

问题是您的控制器位于模块 ( Api) 中。这会影响命名空间,从而影响路由;您必须将该名称空间包含在您传递给respond_with.

通常,我会引导你到这个 stackoverflow 答案(信用在那里)。但是由于您使用的是哈希而不是模型,因此此答案可能更适用。

请注意 Rails 是如何尝试调用..._url方法的。这...是您的哈希,采用 JSON 格式。你需要在这里帮助 Rails 如何渲染。

于 2015-02-22T03:54:05.150 回答