我正在开发一个为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?
我该如何解决?
感谢您的帮助,祝您度过愉快的一天。
答案 0 :(得分:1)
问题是您的控制器位于模块(Api
)中。这会影响名称空间,从而影响路由;您必须将该命名空间包含在传递给respond_with
的内容中。
通常情况下,我会指示你this stackoverflow answer(信用卡去那里)。但由于您使用的是哈希而不是模型,this answer可能更适用。
注意Rails如何尝试调用..._url
方法。 ...
是您的哈希,采用JSON格式。你需要在这里帮助Rails如何渲染。