Объединение опциональных маршрутов в Rails 2.3 - PullRequest
2 голосов
/ 18 августа 2010

Я пытаюсь настроить маршрут так:

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"?

Ответы [ 2 ]

1 голос
/ 18 августа 2010

Rails имеет :path_prefix, :path_names и :name_prefix, которые помогают контролировать, как создаются помощники. В руководстве по маршрутизации rails есть несколько примеров, которые могут помочь.

:path_names контролирует имена, используемые в остальных маршрутах :path_prefix устанавливает путь, используемый при создании помощников. :name_prefix устанавливает префикс к имени сгенерированных помощников. Этот префикс может быть установлен на nil или empty_string.

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

settings.root '', :action => :index, :name_prefix => nil, :conditions => get
1 голос
/ 18 августа 2010
 settings.settings  '', :action => :index, :conditions => get, :name_prefix => ''
...