#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, должно сработать. Это заставит его искать представление в указанном каталоге, прежде чем проверять значение по умолчанию.