Rails如何重写这个旧路由map.connect?

时间:2011-09-15 13:37:19

标签: ruby-on-rails ruby ruby-on-rails-3 wsdl

如何将这条旧路由Rails 1.2.6重写为Rails 3? :

  # Allow downloading Web Service WSDL as a file with an extension
  # instead of a file named 'wsdl'
  map.connect ':controller/service.wsdl', :action => 'wsdl'

我无法看到我应该如何使用匹配路线等。

我用过:

  match ':controller/service.wsdl', :action => 'wsdl'

但我不认为它的工作正确

2 个答案:

答案 0 :(得分:1)

试试这个:

match '/controller/service.wsdl' => 'controller#service.wsdl', :as => :wsdl

我猜你的控制器没有命名为控制器。如果是,我会重命名并改变上述路线。

答案 1 :(得分:0)

我还没有找到一个很好的解决方案来将Rails 2参数化:controller和:action通用路由转换为更明确的Rails 3+格式。我必须做的就是浏览我的应用程序中的每个排列,并为我需要支持的所有内容添加明确的路径。例如,在您的情况下,如果您有3个支持wsdl操作的控制器,我会使用match或get为每个控制器添加新路由。

这里有它的样子,假设你有一个foo_controller,bar_controller和一个blah_controller都支持wsdl动作:

get '/foo/service.wsdl' :to => 'foo#wsdl'
get '/bar/service.wsdl' :to => 'bar#wsdl'
get '/blah/service.wsdl' :to => 'blah#wsdl'

当您需要在控制器上使用以下操作时,这会变得更有趣:action。

如果有人有更好的方法,我会打开(并且渴望)听到更好的方法。