Шаблон рендеринга Rails 3 отсутствует без окончания файла - PullRequest
2 голосов
/ 17 февраля 2011

У меня в контроллере есть действие, как показано ниже:

 def show
    @post = Post.find_by_setitle(params[:setitle])

    if !@post
      render 'error_pages/404'
      return
    end

    respond_to do |format|
      format.html
    end
  end

Если при render error_pages/404 шаблон отсутствует.Переключение на render error_pages/404.haml.html работает нормально.

Почему это так?

NB Фактического контроллера или модели error_pages нет.Просто удобное место для их хранения.

Редактировать: я использую mongoid и, следовательно, не имею доступа к ActiveRecord.База контроллеров не может искать конкретное исключение ActiveRecord?

Ответы [ 2 ]

3 голосов
/ 17 февраля 2011

Из документации

В методе рендеринга также можно использовать представление, которое находится за пределами вашего приложения (возможно, вы разделяете представления между двумя приложениями Rails):

Rails определяет, что это рендеринг файла из-за начального символа косой черты.Чтобы быть явным, вы можете использовать опцию: file (которая требовалась в Rails 2.2 и более ранних версиях):

Вам нужно либо передать опцию :file, либо начать строку местоположения сслэш.В качестве альтернативы, вы можете использовать функциональность Rails для спасения от ошибок и восстановления после ActiveRecord::RecordNotFound с 404. См. этот пост для получения подробной информации.

0 голосов
/ 21 февраля 2011

Вы, вероятно, должны использовать render :template => 'error_pages/404'.Я думаю, что Rails ищет партиал с именем _404.

Попробуйте 1:

render 'error_pages/404' (и назовите файл _404.html.erb)

Попробуйтеout 2:

render :template => 'error_pages/404' (и имя файла 404.html.erb т.е. без начального подчеркивания)

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