我最近更新了一个简单的控制器
render :json => @something
到
respond_to do |format|
format.html {
redirect_to @something
}
format.json {
puts "found json format"
format.json { render json: @something, status: :created }
}
end
但是,现在我收到了ActionView :: MissingTemplate错误。我的问题是,如果我使用respond_to do | format |块,我需要使用模板吗?如果我只想返回普通的json怎么办?
顺便说一句,json respond_to块中的puts语句被成功调用。
答案 0 :(得分:1)
我认为问题是在你的format.json块内部调用puts
以及在它自己的块内部嵌入format.json。尝试删除两者(如下所示)。
respond_to do |format|
format.html {
redirect_to @something
}
format.json {
puts "found json format"
format.json { render json: @something, status: :created }
}
end
尝试:
respond_to do |format|
format.html { redirect_to @something }
format.json { render json: @something, status: :created }
end
答案 1 :(得分:1)
您告诉您接受HTML和JSON格式。由于您的请求来自HTML,因此您将呈现HTML模板。
如果您只想返回JSON,请从代码中删除该行。另请查看respond_to
上的docs。
可能你已经知道了,但有Layouts and Rendering的指南。
答案 2 :(得分:1)
从json渲染块中删除format.json
部分(块中有一个不必要的块):
respond_to do |format|
format.html {
redirect_to @something
}
format.json {
render json: @something, status: :created
}
end
答案 3 :(得分:1)
我认为您的代码提示错误的原因是因为您有
format.json {
format.json { render json: @something , status: :created }
}
你应该:
format.json {
render json: @something , status: :created
}