Ошибка маршрутизации в Ruby on Rails - PullRequest
0 голосов
/ 24 декабря 2011

Я пытаюсь создать приложение Rails, которое обслуживает простые статические HTML-страницы.Я следовал учебному пособию Микеля здесь (оно включает в себя создание контроллера страниц и настройку маршрутизации), но я продолжаю получать сообщение об ошибке.

Я сделал файл app/views/site/pages/_about.html.erb, содержащий мою страницу About,После запуска rails server я пытаюсь перейти на http://localhost:3000/about/, но он дает мне ошибку маршрутизации, потому что у меня есть «неинициализированный постоянный сайт».

Мой проект загружен на GitHub если вы хотите взглянуть на код.

Редактировать: вот мой config/routes.rb файл:

NINAgallery::Application.routes.draw do
  match ':page_name' => 'site/pages#show'
end

А вот важная часть моего app/controllers/pages_controller.rb файла:

class PagesController < ApplicationController

  layout 'site'

  def show
    @page_name = params[:page_name].to_s.gsub(/\W/,'')
    unless partial_exists?(@page_name)
      render 'missing', :status => 404
    end
  end

  # extra code for handling 404 errors goes here

end

Ответы [ 4 ]

1 голос
/ 24 декабря 2011

Последняя строка в PagesController такая:

ValidPartials = Site::PagesController.find_partials

Это означает, что PagesController содержится в модуле сайта. Но в вашем приложении нет модуля Site.

Я думаю, что простое удаление сайта :: должно решить проблему:

ValidPartials = PagesController.find_partials

плюс маршрут:

match ':page_name' => 'pages#show'
1 голос
/ 24 декабря 2011

Ваша заявка называется NINAgallery.

Заменить Site в pages_controller.rb строке 27 на NINAgallery.

PS:

Я только что взглянул на так называемое учебное пособие. Вы принимаете действительно очень вредные привычки.

Некоторые ресурсы для очень хороших основ:

Если вам нравятся учебники: http://ruby.railstutorial.org/

И есть много книг о рельсах. Все хорошо.

1 голос
/ 24 декабря 2011

site/pages#show означает действие show в Site::PagesController

Вам нужно либо поместить контроллер в пространство имен, которое подразумевают ваши маршруты, либо изменить маршрут

0 голосов
/ 24 декабря 2011

Помимо проблемы с пространством имен, вам также необходимо добавить Gem 'app' в Gemfile, как объяснено в руководстве.

Я не знаю, почему вы удалили кеширование статических страниц в вашем рабочем коде. Я сделал пулл-запрос с приложением, работающим и поддерживающим проблему с кешем. Если другой человек заинтересован, код здесь

Также у Райана Бейтса есть учебник под названием "Полустатические страницы" , который делает нечто подобное. Я бы посоветовал вам следовать его решениям, потому что они очень редко ошибаются.

...