Ruby on rails 一个Rails路由,通过不同的查询响应html和json

Ruby on rails 一个Rails路由,通过不同的查询响应html和json,ruby-on-rails,json,angularjs,Ruby On Rails,Json,Angularjs,我的控制器中有一个简单的索引操作,提供html和json格式 def index @records = Model.all respond_to do |format| format.html format.json { render json: @records } end end 我最近在AngularJS中重做了由JSON端点支持的HTML视图。我从日志中注意到,当加载此操作的HTML时,仍然会对HTML视图进行查询,尽管我已设置AngularJS在加载时从

我的控制器中有一个简单的
索引
操作,提供html和json格式

def index
  @records = Model.all

  respond_to do |format|
    format.html
    format.json { render json: @records }
  end
end
我最近在AngularJS中重做了由JSON端点支持的HTML视图。我从日志中注意到,当加载此操作的HTML时,仍然会对HTML视图进行查询,尽管我已设置AngularJS在加载时从JSON端点获取记录


我不确定最好的处理方法。如果我只是响应HTML,我希望能够不进行查询。最明显的方法是仅在格式为JSON时运行查询,但我觉得这不是最好的方法

你可以通过简单的操作来解决这个问题

def index
  respond_to do |format|
    format.html
    format.json { 
      @records = Model.all
      render json: @records 
    }
  end
end

在Rails 3中,对模型调用
all
,点击数据库并检索结果。 在activerecord对象的Rails 3
Model.all.class=Array[class]

如果只希望在视图中迭代集合时运行查询,请不要直接在模型类上调用
.all
。您可以执行以下操作:

@records = Model.scoped
在您的视图中,当您需要显示收藏时:

<% @records.each do |record| %>
  <%= record.inspect %>
<% end %>

在Rails 4中,
all
返回一个ActiveRecord\u关系对象,并且在遍历集合之前不会访问数据库

更多信息,请访问: