我使用respond_to do |format|类型的显式结构来呈现我的响应。工作原理是这样的:
respond_to do |format|
if something
format.json { render json: something, status: :ok }
else
format.json { render json: something_else, status: :ok }
end
end然而,当我尝试这样做的时候(没有特别的原因,只是为了学习)。
respond_to do |format|
if something
format.json { render json: something, status: :ok }
return
end
format.json { render json: something_else, status: :ok }
end它给我“缺少模板”的错误。我尝试了各种变体,但由于某种原因,它忽略了我在return语句之前呈现的内容。我真的不明白发生了什么事?
发布于 2015-04-14 09:09:32
这是因为你的代码的结构。你需要这样做:
respond_to do |format|
if something
format.json { render json: something, status: :ok and return }
end
format.json { render json: something_else, status: :ok }
end处理json格式的代码包含在括号{}中,因此将return放在后面没有任何意义。为了说明这一点,您可以使用以下结构:
respond_to do |format|
if something
format.json { render json: something, status: :ok and return}
format.html { render "new" and return }
end
format.json { render json: something_else, status: :ok }
format.html { render "edit" }
end它将自动响应请求的格式(如果已定义)。
https://stackoverflow.com/questions/29617281
复制相似问题