Может ли рельсы обрабатывать создание представления без контроллера? Например, скажем, у меня есть страница, которая просто ссылается на другие страницы, мне нужно создать для этого фиктивный контроллер или я могу просто что-то сделать в файле маршрутов?
Просмотр рельсов без контроллера
Ответ 1
Нет. Все запросы должны проходить через контроллер.
Мне нравится иметь PagesController
, с map.page ":action", :controller => "pages"
. Таким образом, я могу создать app/views/pages/foo.erb
и получить его на /foo
без дополнительного кода.
Ответ 2
Мне нравится августовский ответ, но у меня есть несколько иной метод.
Предположим, вы хотите добавить
/any/path/somefile.html.erb
но не добавить контроллер...
Вы можете просто добавить папку в представления, называемые "приложение", создать файл в этом каталоге.
Затем в вашем файле маршрутов просто добавьте
match '/any/path/somefile' => 'application#somefile'
Ваш erb по-прежнему оценивает, вы получаете свой макет, и вы можете создать любой путь, который вы хотите... (все это устраняет необходимость в контроллере страниц)
Надеюсь, что это поможет...
Ответ 3
Другим вариантом было бы добавление статического html файла в ваш/общедоступный каталог, если вы действительно не нуждаетесь в нем как часть вашего приложения.
Ответ 4
Если ты храбрый человек. Вы можете попробовать края рельсов 3. Кац продемонстрировал эту возможность в своем блоге. Вот ссылка:
http://yehudakatz.com/2009/07/19/rails-3-the-great-decoupling/
Ответ 5
Нет. Все запросы должны проходить через контроллер.
Если у вас есть страница типа index.html.erb
и contact.html.erb
в вашей папке просмотра. Вам нужно создать фиктивный контроллер под названием contact
. Затем вы можете ссылаться на contact.html.erb
на index.html.erb
. И дайте ссылку как <%= link_to 'contact', :controller => "ads", :action => "contact" %>
здесь "ads" → имя контроллера.