我在模块中有一个AR模型
class Long::Module::Path::Model < ActiveRecord::Base
end
并且想要使用以下路由(没有模块名称,因为它更容易编写和记住)
resources :models
buts Rails 3总是想使用像
这样的网址long_module_path_model_url
有没有办法改变这种行为?
希望那里有人可以帮助我吗?
马里奥
答案 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。