为什么我的控制器没有返回JSON响应?

时间:2018-02-06 14:15:45

标签: android ruby-on-rails json ruby-on-rails-5

这是代码

def index
  @projects = Project.all.includes(:todos) 
  respond_to do |format|
    format.html 
    format.json { render json  @projects => @projects.to_json(:include => :todos) }
  end
end

我尝试使用Ion从我的Android应用程序中获取JSON

String serverAdress = "https://the-url.com/"
Ion.with(context)
            .load(serverAdress)
            .asJsonObject()

但是得到解析错误,因为没有从那里返回。如果有单独的控制器方法只能返回JSON响应,我就能获得JSON,所以这段代码工作

def indexJson
  @projects = Project.all.includes(:todos) 
  render json  @projects => @projects.to_json(:include => :todos)
end

但同样,我无法在那里发布任何内容(我的意思是其他单独的JSON控制器方法)。在rails设置或获取数据时我错过了什么?谢谢。

2 个答案:

答案 0 :(得分:0)

您需要来自Ion的json请求才能获得JSON响应。

在第二种情况下,您还没有定义HTML返回格式,因此默认情况下rails会向您发送json响应,这就是为什么第二种情况正在起作用

答案 1 :(得分:0)

我偶然在某个网站上遇到了一些控制器评论

# GET /projects
# GET /projects.json

并试图将'.json'附加到我的地址请求中,并且它有效!为什么不告诉任何地方?,我认为'json'在请求参数中的某个位置,而不是在地址本身。