Имя класса для просмотра пути - PullRequest
3 голосов
/ 24 марта 2010

У меня есть приложение RoR и модель SomeModel. У меня есть представления для этой модели, и я хочу знать - есть ли способ получить путь к представлению? Конечно, я могу использовать для этой модели экземпляр

m = SomeModel.new
v = m.class.class_name.pluralize.downcase

Это работает, но, может быть, вы знаете лучший способ? :)

Ответы [ 4 ]

1 голос
/ 26 апреля 2010

Как сказал @ fl00r, нет, общего метода для этого нет, поскольку имена всех представлений зависят от реализаций отдельных приложений (не каждый контроллер является контроллером ресурсов), но вы, конечно, можете написать несколько помощников, вам не нужно часто вводить m.class.class_name.pluralize.downcase.

module ViewPathHelper
  def resource_view_path(model_obj, action)
     "#{model_object.class.class_name.pluralize.downcase}/#{action}"
  end
end

будет одним из способов сделать это.

Это кажется несколько странным запросом - зачем вам нужен путь просмотра? Вы делаете что-то очень полиморфное? (Потому что есть эта вещь, называемая polymorphic_path ...)

0 голосов
/ 31 октября 2017

to_partial_path делает то, что вы просите.

Это очень удобно, особенно при работе с ajax и / или вложенными и полиморфными отношениями.

0 голосов
/ 27 апреля 2010

Если вы чувствуете, что вам нужен путь к представлению в вашей модели, скорее всего, вы вводите логику в свою модель, которая принадлежит контроллеру или помощнику. Вы можете пересмотреть, как вы разделяете свою логику MVC.

0 голосов
/ 24 марта 2010

Виды работы с моделями через слой контроллеров. Каждое представление соответствует какому-либо действию роутера / контроллера. Итак, путь к представлениям, связанным с именем контроллера: app / views / some_controller / {связка файлов} .html.erb

Не всегда верно, что ваше имя dirname ссылается на название вашей модели. Так что не существует универсального способа выяснить dirname.

Ваше решение подходит, но не во всех случаях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...