Ruby on rails rails 3路由中的连字符资源

Ruby on rails rails 3路由中的连字符资源,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,如何在资源URL中使用连字符? 例如:/my model/或/my model/1。 如果我将路由定义为resources:“我的模型”我会得到语法错误,因为rails为我的模型生成方法def hash\u url(options=nil)您尝试过自定义路由吗 map.connect "/my-model/:id", :controller => 'my-model-controller', :action => 'read' 这将调用“my model controller.rb

如何在资源URL中使用连字符? 例如:
/my model/
/my model/1

如果我将路由定义为
resources:“我的模型”
我会得到语法错误,因为rails为我的模型生成方法
def hash\u url(options=nil)

您尝试过自定义路由吗

map.connect "/my-model/:id", :controller => 'my-model-controller', :action => 'read'

这将调用“my model controller.rb”的“read”方法。

您可以使用
:as
选项配置带有连字符URL的资源路由:

map.resources :my_model, :as => "my-model"
导致

my_model_index GET /my-model(.:format) {:action=>"index",
  :controller=>"my_model"}

…等等…

我找到了解决方案:

  resources "my-models", :as => :my_models, :controller => :my_models
更新:
正如Timo Saloranta在评论中所说,在最新的Rails 3版本中,它不需要
:controller=>:my_models

是的,这是显而易见的解决方案,但有趣的是,如何使用资源定义连字符路由。我已经尝试过这样做。我得到的错误与使用连字符命名模型时的错误相同。即使使用带引号的字符串而不是符号,我也找到了解决方案。您可以在我的回答中看到这一点。我认为这也可以(不同之处在于路由助手的命名):
资源:product_types,:path=>'/product types'
它可以在没有控制器部件的情况下使用最新的Rails 3版本