在 rails 的嵌套资源中按 slug 查找资源

Find resource by slug in nested resource in rails

我有以下路线

 resources :shops do
    resources :categories
  end

当我访问这个 url:

http://localhost:3000/shops/rabin-shop/categories

我想先用slug找店铺'rabin-shop',然后过滤属于该店铺的商品类别。在我的控制器中,我尝试实现

    def find_shop
       @shop = Shop.find(params[:slug])
    end

但这不起作用。我知道这不是在嵌套资源中查找的方法。我正在使用 friendly_id gem 。我无法执行类似 current_user.shop 的操作,因为我希望即使用户未登录也能访问该页面。

如果您使用的是 freindly_id gem,这就是您通过 slug 查找记录的方式:

 def find_shop
   # params[:shop_id] if nested
   @shop = Shop.friendly.find(params[:id])
 end