在api控制器中调用create时未定义的方法{....} _ url

时间:2013-10-02 03:32:29

标签: ruby-on-rails json

我正在开发一个为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

show动作很好但是当我调用create动作时我得到了

NoMethodError(未定义的方法'{“id”:17,“name”:“abc”,“version”:1} _url'for API :: ProjectsController:0x007fbb2294cd18)

为什么我在演出工作正常时会收到此错误?是因为创建帖子而非get?

我该如何解决?

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

1 个答案:

答案 0 :(得分:1)

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

通常情况下,我会指示你this stackoverflow answer(信用卡去那里)。但由于您使用的是哈希而不是模型,this answer可能更适用。

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