2012-05-08 4 views
0

Rails 3.2。ここでは、すべてhttp://domain.dev/toysshops()のshop_type(私の表の欄)にのみ表示するように指示します。ルート内のパラメータを渡す

# routes.rb 
resources :shops 

match 'toys' => 'shops#index', :as => :toys, :via => :get, :constraints => {:shop_type => 'toys'} 

# shops_controller.rb 
def index 
    @shops = Shop.find(:all) 
end 

何が間違っていますか?ありがとう。

答えて

2

間違った部分:Shop.find(:all)

Constraints are for route segments.

(まあ、および動詞が、その後、彼らは :viaで指定している。 Request上またはメソッド。) routes.rb

+0

マインドt oいくつかアイデアを共有して改善する方法は? – Victor

+0

@Victor適切な店舗タイプを見つける必要があります - それを行う最もクリーンな方法はわかりませんが、最も簡単な方法は、それを行い、呼び出して、適切なテンプレートをレンダリングするメソッドを作成することです。 –

0

match 'shops(/:shop_type)' => 'shops#index', :via => :get, :as => :shops_path 

shops_controller.rbで:

SHOP_TYPES = [:toys, :clothing, :accessories] 

def index 
    @shops = [] 
    if SHOP_TYPES.include? params[:shop_type].to_sym 
     @shops = Shop.find_all_by_shop_type(params[:shop_type]) 
    else 
     @shops = Shop.find(:all) 
    end 
end 
関連する問題