2010-08-18 2 views
2

Я Тринг настроить маршрут так:Комбинирование Опция Маршруты в Rails 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.

Если бы я был TODO

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 или в пустом_строке.

В вашем случае, я хотел бы попробовать (хотя непроверенные):

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

такое определение дает ошибку settings.root: действие =>: индекс,: name_prefix => ноль,: условия => прибудете дает root_path, но не settings_path – Bohdan

1
settings.settings '', :action => :index, :conditions => get, :name_prefix => '' 
Смежные вопросы