我正在使用经典respond_to do |format|
的html和json响应,但现在我试图实现xhr数据加载,经过一段时间的搜索,这是我的解决方案(带有相应的js和html模板) :
respond_to :html, :js, :json
# GET /messages
def index
@search = Messages.valid.search(params[:search])
@messages = @search.paginate(:page => params[:page])
respond_with(@messages, :layout => !request.xhr?)
end
html和js响应正常,但现在如果我想调用类似/messages.json
的内容,它会抛出我:
ArgumentError in MessagesController#index
There was no default layout for MessagesController in [#<ActionView::FileSystemResolver:0x1064c23c0 @caching=false, @path="/Users/alter/workspace/trilog/app/views", @cached={}>]
respond_with
如何处理这些数据类型?我该怎么做才能在所有不同的格式类型中做出回应?
提前致谢
更新
看似here
我添加了一个只有一行index.json.haml
的{{1}}模板,但我不认为为json类型添加模板是最佳解决方案。有什么想法吗?
答案 0 :(得分:0)
对于JSON,我只使用:
respond_to do |f|
f.json { render json: @messages }
end
这可能不适合使用respond_with
;最有意义的可能取决于需要修改多少动作,控制器等。
我很想知道其他答案会带来什么。