Rails: разрешить единому пространству имен и ресурсу совместно использовать папку просмотра

#ruby-on-rails #ruby-on-rails-3 #views #convention

#ruby-on-rails #ruby-on-rails-3 #Вид #соглашение

Вопрос:

У меня есть следующие маршруты, определяющие определенные ресурсы:

 resource :account, :only => [:show]
namespace :account do
  resource :billing
end
  

Итак, у меня есть AccountsController, который генерирует страницу «показать» по адресу /account .

У меня также есть BillingsController, в котором я хочу, чтобы меня просматривали /account/billing .

Это работает нормально, но одна вещь, которая меня беспокоит, заключается в том, что соглашение гласит, что папка просмотра для AccountsController является множественным числом, хотя это единственный ресурс — не имеет большого значения, но при создании соответствующего пространства имен для вложенного ресурса у меня теперь есть две отдельные папки просмотра — /app/views/account (для пространства имен) и app/views/accounts (для ресурса учетной записи).

Итак, это как бы сбивает меня с толку.

Каков был бы наилучший способ заставить AccountsController использовать единственную account папку для просмотров?

Ответ №1:

Как бы то ни было, я решил, что было бы проще всего изменить AccountsController на AccountController и изменить мой routes.rb файл следующим образом:

 resource :account, :controller => 'account'
  

Это было немного чище, чем все, что я мог придумать.

Ответ №2:

Существует множество опций, но использование self.prepend_view_path("views/account") в методе, вызываемом before_filter в AccountsController, должно сработать. Это заставит его искать представление в указанном каталоге, прежде чем проверять значение по умолчанию.