2017-09-24 83 views
0

夥計後,是否有簡單的方式顯示相關模型?我有兩個簡單的模型:在Ransack搜索

class Restaurant < ApplicationRecord 
    has_many :reviews 

end 

class Review < ApplicationRecord 
    belongs_to :restaurant 

end 

任務是顯示餐廳畢竟評論或餐館發現

類似的東西

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

但這個代碼不知道評論留言原因它`不是AR ::關係

一個極壞的解決方案看起來像

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

但是意見是非常可怕的。有沒有簡單的方法來獲得評論? 感謝

回答

1

這個怎麼樣

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

這是很可笑的。我點擊reviews_path上的提交按鈕,它將我重定向到restaurants_path並顯示找到的餐廳 – zOs0

1

洗劫的文檔說明您可以預載斷結果。 See here

更新後的代碼會是這個樣子:

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

最後,這裏是一個有趣的相關的問題:https://stackoverflow.com/a/39271500/648695

相關問題