2010-12-14 15 views
1

は私のRailsは2つの経路である:Rails 3のルートでwith_optionsを行うより良い方法はありますか?ここ

map.with_options :controller => 'foo', :conditions => { :method => :post } do |foo| 
    foo.one 'one', :action => 'one' 
    foo.two 'two', :action => 'two' 

    foo.with_options :special_flag => 'true', :path_prefix => 'special_prefix', 
    :conditions => { :method => :get } do |bar| 
    bar.three '',  :action => 'for_blank' 
    bar.four 'another', :action => 'for_another' 
    end 
end 

私は3をレールにこの種のものを変換する方法を教えてください。同じ方法でwith_optionsを使い続けるだけですか?代わりに

match '' => 'foo#for_blank' 

を行うので、私はルートが提供方法に固執してみ

match '', :action => 'for_blank' 

答えて

2

うんためhttp://guides.rubyonrails.org/routing.htmlを参照してください。

このよう
+0

sweet。また、私は経由して、「投稿する」と「投稿する」を行うことができます。 –

+0

@ジョン:そうです。 –

1

をやっているので、それはいくつかのケースでwordierになります。 Rails 3では非常に強力で、必要なものはすべて提供する必要があります。

map.with_options :controller => 'foo', :via => :post do 
    match 'one', :action => 'one' #automatically generates one_* helpers 
    match 'two', :action => 'two' #automatically generates two_* helpers 

    foo.with_options :special_flag => 'true', :path => 'special_prefix', :via => :get do 
    match '',  :action => 'for_blank' 
    match 'another', :action => 'for_another', :as => "four" # as will change the helper methods names 
    end 
end 

:viaオプションが非常に良く構文であなたの醜いconditionsハッシュを置き換え:with_optionsはまだこれを試してみてください3.レールで動作し、より詳細

+2

「コントローラー」食べ物の「do」...それはトリックをする! http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Scoping.html#method-i-controller –

+0

実際、 'controller'はありません...ああ...コントローラーのメソッドが多すぎます大丈夫とは思われないので、それが理由かもしれません。とにかく解決策を見つけたことを知ってよかったです。 – iain

2

:私は慎重に、私を助けていないscope` `よりもはるかに他を見つけられませんでしたが、ちょうど今、私はAPIで少し深く掘って同類を見つけたことを読んで

#JSON API 
defaults :format => 'json' do 
    get "log_out" => "sessions#destroy", :as => "log_out" 
    get "log_in" => "sessions#new",  :as => "log_in" 
    get "sign_up" => "users#new",  :as => "sign_up" 

    resources :users, :sessions 
end 
関連する問題