Почему строительные леса не работают в Ruby on Rails?

Я создал контроллер и модель. Контроллер называется "Админ", а модель называется "Альбом". Я отредактировал database.yml с правильной информацией и выполнил команду rake db:migrate, которая не возвращала ошибок и перенесла db в schema.rb. Внутри контроллера я написал:

class AdminController < ApplicationController

  scaffold :album

end

Затем я запустил свой сервер и зашел по http://localhost:3000/admin, но вместо обычной страницы CRUD я получаю следующую ошибку:

app/controllers/admin_controller.rb:3

Request

Parameters: 

None

Show session dump

--- 
flash: !map:ActionController::Flash::FlashHash

{}

Response

Headers: 

{"cookie"=>[],
 "Cache-Control"=>"no-cache"}

Есть идеи почему?

3 ответа

Этот синтаксис для строительных лесов уже давно устарел. В настоящее время rails (версии 2.x) используют следующий метод для создания ресурса:

script/generate scaffold Album title:string date:date ...

Это генерирует представления скаффолдинга (в приложении / представлениях), контроллер (приложение / контроллеры), стандартные тесты (в тесте /) и, что особенно важно, необходимые маршруты для работы скаффолдинга.

Я считаю, что команда разработчиков rails убрала старый синтаксис ("scaffold:resource"), потому что ни одно реальное приложение никогда не оставило бы scaffold нетронутым, т.е. вам всегда понадобится какая-то настройка. С новым синтаксисом вы можете оставить его без изменений, но его также гораздо проще настроить.

Если вам действительно нужно, чтобы ваш контроллер назывался admins, вы можете изменить файл config / rout.rb после создания скаффолдинга. Однако это не имеет смысла: почему URI для создания нового альбома должен называться "/admins/new"?

Если вы пытаетесь создать область администратора для приложения с альбомом изображений, вы, вероятно, ищете пространства имен (поэтому вы можете иметь несколько различных ресурсов, контроллеров и представлений в пространстве имен "admin"). Чтобы создать ресурс альбома в пространстве имен администратора, напишите:

script/generate scaffold Admin/Album title:string date:date

В этом случае ваш контроллер будет доступен как http://host/admin/albums.

Команда script / generate, кажется, не работает, кто-то должен предоставить./script/generate, я думаю, что это проблема с каталогом linux, вы должны явно сказать, что вы запускаете из текущего каталога (./). надеюсь, что это помогает кому-то избежать почесать голову

Хм,

Обычно у вас есть контроллер и модель с именем Admin, и то же самое будет с Album,

Посмотрите на этот краткий ролик о том, как ведется блог с использованием строительных лесов;

Создание веб-блога

Другие вопросы по тегам