2017-09-24 4 views
0

gars. J'ai deux modèles simples:Y at-il un moyen simple d'afficher les modèles associés après Ransack recherche

class Restaurant < ApplicationRecord 
    has_many :reviews 

end 

et

class Review < ApplicationRecord 
    belongs_to :restaurant 

end 

tâche est de montrer tous les commentaires après restaurant ou restaurants trouvé

Quelque chose comme ça

class ReviewsController < ApplicationController 
    def index 
    @search = Restaurant.search(params[:q]) 
    @reviews = @search.result.reviews 
end 

fin

Mais ce code ne connaît pas de commentaires Message Cause `s pas une AR :: Relation

Une très mauvaise solution ressemble

def index 
    @search = Restaurant.ransack(params[:q]) 
    @reviews = @search.result.each_with_object([]) do |rest, arr| 
    arr << rest.reviews 
    end 

fin

Mais des vues sont très terrible. Existe-t-il un moyen simple d'obtenir des avis? Merci

Répondre

1

Que diriez-vous cette

def index 
    @search = Restaurant.ransack(params[:q]) 
    @reviews = Review.where(restaurant_id: @search.result.pluck(:id)) 
end 
+0

Il est très drôle. Je clique sur le bouton soumettre sur reviews_path et il me redirige vers restaurants_path et montre des restaurants trouvés – zOs0

1

énoncez docs de saccagent vous pouvez précharger hors du résultat. See here.

code mis à jour ressemblerait à quelque chose comme ceci:

class RestaurantController < ApplicationController 
    def index 
    @q = Restaurant.ransack(params[:q]) 
    @restaurants = @q.result.includes(:reviews) 
    end 
end 

Enfin, voici une intéressante question connexe: https://stackoverflow.com/a/39271500/648695