“json格式的响应中没有...的默认布局”

时间:2011-11-30 01:25:26

标签: ruby-on-rails ruby-on-rails-3 json xmlhttprequest

我正在使用经典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类型添加模板是最佳解决方案。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

对于JSON,我只使用:

respond_to do |f|
    f.json { render json: @messages }
end

这可能不适合使用respond_with;最有意义的可能取决于需要修改多少动作,控制器等。

我很想知道其他答案会带来什么。