Почему строительные леса не работают в Ruby on Rails? - PullRequest
0 голосов
/ 15 апреля 2010

Я создал контроллер и модель. Контроллер называется «Администратор», а модель называется «Альбом». Я отредактировал 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 ]

2 голосов
/ 15 апреля 2010

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

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

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

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

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

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

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

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

0 голосов
/ 20 апреля 2012

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

0 голосов
/ 15 апреля 2010

Хм,

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

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

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

...