2010-08-18 35 views
2

我特林設置一個路由,像這樣:結合期權路線2.3

GET /設置/ PUT /設置/ GET /設置/照片 PUT /設置/照片

這是路由代碼,我已經安裝了它:

#I just do this for code reuse 
get = { :method => :get } 
put = { :method => :put } 

pub.settings '/settings', :controller => :settings, :action => :index, :conditions => get 
pub.with_options :controller => :settings, :path_prefix => "/settings", :name_prefix => "settings_" do |settings| 
    settings.update '', :action => :update, :conditions => put 
    settings.photos '/photos', :action => :photos, :conditions => get 
    settings.photos_update '/photos', :action => :photos_update, :conditions => :put 
end 

這工作,但如果你注意到第一條路線「pub.settings」是mapped_options塊之外。

如果我是待辦事項

pub.with_options :controller => :settings, :path_prefix => "/settings", :name_prefix => "settings_" do |settings| 
    settings.root '', :action => :index, :conditions => get 
    settings.update '', :action => :update, :conditions => put 
    settings.photos '/photos', :action => :photos, :conditions => get 
    settings.photos_update '/photos', :action => :photos_update, :conditions => :put 
end 

然後我會得到(在耙路線)的路徑設置將是「settings_root_path」,而不是「settings_path」

有誰知道如何把它列入到該塊仍然具有路由功能名稱「settings_path」?

回答

1

Rails有:path_prefix:path_names,並:name_prefix,有助於控制助手是如何生成的。 rails routing guide有幾個例子可能有幫助。

:path_names控制在寧靜路線中使用的名稱 :path_prefix設置生成助手時使用的路徑。 :name_prefix將前綴設置爲生成的助手的名稱。該前綴可以設置爲nil或empty_string。

對於你的情況,我想嘗試(雖然未經測試):

settings.root '', :action => :index, :name_prefix => nil, :conditions => get 
+0

這樣的定義給出了一個錯誤 settings.root:動作=>:指數:name_prefix =>零,:條件=> GET給出root_path而不是settings_path – Bohdan 2010-08-19 00:13:02

1
settings.settings '', :action => :index, :conditions => get, :name_prefix => ''