Как я могу отфильтровать результаты в представлении, используя include в контроллере в rails 3? - PullRequest
2 голосов
/ 31 марта 2011

У меня есть это в моем контроллере:

class User::ResourcesController < User::UserController
  def index
     @resource_type = ResourceType.find_by_name(params[:resource_type].to_s.titleize)
     @products = @products.includes(:resources).where(:resources => { :resource_type_id => @resource_type.id })

     respond_to do |format|
       format.html # index.html.erb
       format.xml  { render :xml => @resources }
     end
  end
end

Я пытаюсь отфильтровать свои ресурсы, чтобы, на мой взгляд, я мог использовать приведенный ниже код и использовать только те ресурсы, которые имеют правильный resource_type_id.

@products.each do |product|
  product.resources.count
end

Ответы [ 2 ]

3 голосов
/ 31 марта 2011
@products = Product.includes(:resources).where("resources.resource_type_id = ?", @resource_type.id)
1 голос
/ 14 октября 2014

Попробуйте что-то вроде этого:

@products = Product.includes(:resources).where(resources: { 
  resource_type_id: @resource_type.id 
})

Это безопаснее и проще для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...