2010-04-15 3 views
0

Я создал контроллер и модель. Контроллер называется «Администратор», а модель называется «Альбом». Я отредактировал базу данных.yml с соответствующей информацией и сделал команду rake db: migrate, которая не возвращала никаких ошибок и выполняла миграцию db внутри schema.rb. Внутри контроллера я писал:Почему строительные леса не работают в Ruby on Rails?

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"} 

Любая идея, почему?

ответ

0

Hm,

Обычно вы бы контроллер и модель называется Администратор и то же самое было бы об альбоме,

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

Creating a web-blog

2

Этот синтаксис для строительных лесов является устаревшим в течение достаточно долгого времени. В настоящее время, рельсы (версии 2.x) используют следующий метод эшафот ресурса:

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

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

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

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

Если вы пытаетесь создать админ-зону для приложения для фотоальбома, вы, вероятно, ищете пространства имен (так что вы можете иметь несколько разных ресурсов, контроллеров и представлений внутри пространства имен «admin»). Для того, чтобы создать ресурс альбома в пределах пространства имен администратора, написать:

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

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

0

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