我找到了如何在Rails 3中渲染ActiveRecord对象,但是我无法弄清楚如何渲染任何自定义对象。我正在写一个没有ActiveRecord的应用程序。我尝试过这样的事情:
class AppController < ApplicationController
respond_to :json
...
def start
app.start
format.json { render :json => {'ok'=>true} }
end
end
答案 0 :(得分:7)
当您指定respond_to
时,在您的操作中,您将匹配respond_with
:
class AppControlls < ApplicationController
respond_to :json
def index
hash = { :ok => true }
respond_with(hash)
end
end
您似乎将旧的respond_to do |format|
样式块与新的respond_to
,respond_with
语法混为一谈。 This edgerails.info post很好地解释了。
答案 1 :(得分:1)
class AppController < ApplicationController
respond_to :json
def index
hash = { :ok => true }
respond_with(hash.as_json)
end
end
你永远不应该使用to_json来创建表示,只能使用表示。
答案 2 :(得分:0)
这非常接近。但是,它不会自动将哈希值转换为json。这是最终的结果:
class AppControlls < ApplicationController
respond_to :json
def start
app.start
respond_with( { :ok => true }.to_json )
end
end
感谢您的帮助。
答案 3 :(得分:0)
format.json { render json: { ok: true } }
应该有效
答案 4 :(得分:0)
对于那些得到NoMethodError的人,试试这个:
class AppController < ApplicationController
respond_to :json
...
def start
app.start
render json: { :ok => true }
end
end