Rails 3 трассы и модули - PullRequest
2 голосов
/ 17 июня 2010

У меня есть модель AR внутри модуля

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

и я хочу использовать следующие маршруты (без имен модулей, потому что их легче писать и запоминать)

resources :models

butsRails 3 всегда хочет использовать URL-адрес типа

long_module_path_model_url

Есть ли способ изменить это поведение?

Надеюсь, кто-нибудь может мне помочь?

Марио

Ответы [ 3 ]

3 голосов
/ 13 сентября 2010

Мне немного любопытно, почему вы ссылаетесь на модель, когда говорите о маршрутизации, которая обрабатывает только уровень контроллера; но эта статья должна быть полезной: пространства имен контроллера R3 и маршрутизация

"Если вы хотите направить / фотографии (без префикса / admin) в Admin :: PostsController, вы можете использовать:

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

"

Если вы хотите изменить именованные пути, вы можете использовать: как, как указано здесь: R3 Префикс помощников именованных маршрутов

Так что я предполагаю что-то вроде

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

Это то, что вы ищете.

2 голосов
/ 31 октября 2014

Я знаю, что это старый вопрос, но другие неправильно поняли ваш вопрос и не решили вашу проблему.

Вам необходимо переопределить метод model_name, как показано ниже:

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

Кредит идет на этот комментарий .

2 голосов
/ 17 июня 2010
resources :your_looooooong_model_name, :as => :short

даст вам shorts_url и т. Д.

...