Rails маршрутизация \ проблема с контроллером - PullRequest
0 голосов
/ 05 июня 2011

routes.rb

match '/:permalink' => 'Pub#show_page'

в pub_controller:

 def show_page

    @page = Page.find_by_permalink(params[:permalink])

     if @page.nil?
        render :status => 404
     end

 end

в show_page.html.erb:

<h1><%= @page.title %></h1>
<br>
<p><%= @page.content %></p>

Затем я перехожу на localhost: 3000 / notisting-permalink

Что здесь происходит? Я всегда получаю "неопределенный метод` title 'для nil: NilClass ", означающий, что по какой-то причине def show_page пропускает браузер к представлению. Я пробовал все возможные варианты операторов if и never, чтобы попытаться исправить это, но он всегда игнорирует оператор if.

Если постоянная ссылка верна, например ..3000 / существующие-постоянные ссылки /, она прекрасно отображает страницу.

Почему игнорируется оператор if? Я сбит с толку.

Большое спасибо ..

1 Ответ

1 голос
/ 05 июня 2011
render :status => 404

просто отображает обычную страницу с кодом состояния 404. Например, она выполняет show_page.html.erb с кодом Apache 404 (который, конечно, невидим для пользователя).* Вы хотите перенаправить на страницу 404.См. Как перенаправить на 404 в Rails?

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