Rails 3路由和模块

时间:2010-06-17 14:44:22

标签: routing routes ruby-on-rails-3

我在模块中有一个AR模型

class Long::Module::Path::Model < ActiveRecord::Base
end

并且想要使用以下路由(没有模块名称,因为它更容易编写和记住)

resources :models

buts Rails 3总是想使用像

这样的网址
long_module_path_model_url

有没有办法改变这种行为?

希望那里有人可以帮助我吗?

马里奥

3 个答案:

答案 0 :(得分:3)

我有点好奇为什么在谈论只处理控制器级别的路由时引用模型;但是这篇文章应该有用:R3 Controller Namespaces and Routing

“如果你想路由/照片(没有前缀/ admin)到Admin :: PostsController,你可以使用:

scope :module => "admin" do
  resources :posts, :comments
end

如果您希望更改命名路径,可以使用:as,如此处所指定:R3 Prefixing the Named Routes Helpers

所以我猜的是

<强> 1

scope :module => 'long/module/path' do
   resources :model, :as => :model
end

或2:

scope :module => 'long' do
  scope :module => 'module' do 
   scope :module => 'path' do
    resources :model, :as => :model
   end end end

您正在寻找什么。

答案 1 :(得分:2)

resources :your_looooooong_model_name, :as => :short

会给你shorts_url等等。

答案 2 :(得分:2)

我知道这是一个老问题,但是其他人误解了你的问题并没有解决你的问题。

您需要覆盖model_name方法,如下所示:

class Long::Module::Path::Model < ActiveRecord::Base
  def self.model_name
    ActiveModel::Name.new(Long::Module::Path::Model, nil, "YourNewModelName")
  end
end

归功于此comment