在Rails中组合选项路由2.3

时间:2010-08-18 14:32:33

标签: ruby-on-rails ruby routing block rest

我想要设置这样的路线:

获取/设置/ 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

然后我会(在rake路线中)设置的路径是“settings_root_path”而不是“settings_path”

是否有人知道如何将其包含在块中并且仍然将路由功能名称设置为“settings_path”?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

Rails有:path_prefix:path_names:name_prefix,可帮助控制帮助程序的生成方式。 rails routing guide有一些可能有用的示例。

:path_names控制在restful路由中使用的名称 :path_prefix设置生成帮助程序时使用的路径。 :name_prefix将前缀设置为生成的帮助程序的名称。此前缀可以设置为nil或empty_string。

对于你的情况,我会尝试(虽然未经测试):

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