| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Ruby On Rails > undefined method `scaffold' |
| Автор: segods 17.2.2008, 14:32 | ||||||
| Делаю пример из книги и столкнулся с undefined method `scaffold' В чем дело?
САМ пример контролера:
И миграции:
И сама страничка: NoMethodError in AdminController#index undefined method `scaffold' for AdminController:Class RAILS_ROOT: I:/InstantRails-2.0-win/rails_apps/magaz Application Trace | Framework Trace | Full Trace app/controllers/admin_controller.rb:2 script/server:3 Request Parameters: None Show session dump --- flash: !map:ActionController::Flash::FlashHash {} Response Headers: {"cookie"=>[], "Cache-Control"=>"no-cache"} |
| Автор: source777 17.2.2008, 15:40 |
| Из Rails 2.0 был убран динамический скаффолдинг, за не надобностью... Те, кому его не хватает могут воспользоваться плагином active_scaffold... Читай http://davidlynch.org/blog/2008/01/rails-20-scaffolding/ |
| Автор: segods 17.2.2008, 16:13 |
| Почитал. Спасиб. Но подскажи как мне добавить скаффолдинг именно в мой контроллер admin ? Ибо если выполнить ./script/generate scaffold product то по url /admin/ ничего не работает. |
| Автор: source777 17.2.2008, 16:51 | ||
Не внимательно ты читал похоже, надо
А контроллер будет согласно соглашению об именах называться products, а не admin... |
| Автор: source777 17.2.2008, 18:57 | ||||
Я так понимаю ты хочешь сделать админку? ну так и сделай её по-человечески при помощи before-фильтров и одного роута map.connect 'admin/:controller/:action/:id'
|
| Автор: segods 17.2.2008, 19:32 | ||||
Неа, с PHP на RoR ! Может быть только с начала у новичков складывается такое впечатление(надеюсь), но я уже больше всех ненавижу RoR. Нервная система уже дымится... На ПХП я бы этот долбаный интернет-магазин дааааавно написал бы, т.к где угодно и что угодно могу писать, а в RoR нет. (извините, я на эмоциях)
И так ситуация в крации: -Купил все что связано с Руби и было на озоне, в том числе: "Гибкая разработка веб-приложений в среде Rails". -С "Hello, World!" проблем не было. Но следующий проект: интернет магазин (Книга написана для Rails 1.2, у мя 2.0.) Есть модель product и контроллер admin, в книге их связывали легко: depot> ruby script/generate scaffold product admin Естественно в 2.0 это не катит. Если создавать вот так: depot>ruby script/generate scaffold product title:string description:text image_url:string то создается "представление" и усё... По Вашему совету добавляю роут: map.connect 'admin/:controller/:action/:id' но ситуация остается той же... Что самое страшное, что суппорта вооообще никакого... Книга сама в 2.0 ничего не знает. Русские Форумы на пальцах одной руки можно посчитать, а более менее численный только один, этот. Единственная возможность что то прояснить, это ты) Как такие простые и элементарные вещи теперь делаются в версии 2.0 ? |
| Автор: source777 17.2.2008, 20:00 | ||||||||||||||||||
|
| Автор: segods 17.2.2008, 20:44 | ||||
| А что надо прописать для того что бы админка была не тут http://localhost:3000/admin/products , а тут http://localhost:3000/admin/ ? Если ты понял по какой книге я вопросы задаю, тогда может сразу посоветуешь что как сделать? Просто и после генерации даже по http://localhost:3000/admin/products ничего доступно не было.
По-подробнее поясни. Я создал модель product, миграцию для нее. Также добавил контроллер admin(где и должен был быть "scaffold :product") и все. больше ничего не делал. Только пытался добавить скаффолдинг: depot>ruby script/generate scaffold product title:string description:text image_url:string Зачем я все купил? Потому что на работу приглашают, больший дефецит у них на Руби, вот интенсивно учу. ну на коленке никогда не писал, на PHP пишу с учетом MVC, пусть может менее гибком, но четкое разделение на три части есть. Ниже прикрепил routes.rb |
| Автор: source777 17.2.2008, 21:21 | ||||
В роутах верно прописал, а не работает из-за того, что скаффолдинг обламывается, т.к. ты вручную уже создал "модель product, миграцию для нее.", удали их и запусти скаффолдинг ещё раз.
|
| Автор: segods 17.2.2008, 22:08 |
| source777, спасибо тебе. Супер! Получилось. Все отлично, только немного не нравится что помимо http://localhost:3000/admin/products/ этот интерфейс доступен по http://localhost:3000/products/ Не очень хорошо когда любой юзер с "улицы" сможет редактировать/удалять записи в БД. Догадываюсь что, что то надо подправить в routes.rb . Что именно? И есть ли где инфа про синтаксис этого файла? (по оглавлению в книгах не заметил) |
| Автор: source777 17.2.2008, 23:13 | ||||
чего уж там, все когда-то так писали, главное чтобы это осталось в прошлом
При этом лучше поместить функцию проверки авторизации в application.rb Добавлено через 1 минуту и 48 секунд Однако я всё-таки советую тебе спокойно читать книгу, а не париться преждевременно по таким пустякам, лишь из-за того, что ты до каких-то моментов ещё не дочитал... Добавлено через 4 минуты и 14 секунд
подсказываю, стр. 404 и т.д. Добавлено через 9 минут и 26 секунд Кстати чтобы всё-таки реализовать твою мечту, http://localhost:3000/admin/, надо вписать маршрут map.connect 'admin/:action/:id', :controller => 'products' |
| Автор: fixxer 18.2.2008, 14:19 |
| Кстати, столкнулся с такой же проблемой, что вся newbie инфомация, книги и т.п. по rails 1.2 Но, что хорошо, обе версии могут спокойно сосуществовать. Я решил для себя учить по версии 1.2 и когда буду готов, перейду на 2.0 просто доставляешь. gem install -v1.2.4 --include-dependencies rails. делаешь проект rails _1.2.4_ <имя проекта> и погнал по книжке. |
| Автор: Volniy_Strelok 28.5.2008, 12:29 |
| fixxer, Спасибо очень помогло |
| Автор: tanship 7.7.2008, 11:50 |
| |
| Автор: RussianBB 5.8.2008, 13:46 | ||
Народ, помогите новичку, пожалуйста!
можете подробно рассказать как это делать? на всякий случай - я работаю в Aptana Studio. Заранее, огромное спасибо, замучился уже |
| Автор: source777 5.8.2008, 14:07 |
1) Вылезти из чума 2) Открыть консоль/терминал 3) Набрать команду 4) Нажать Enter 5) Затаив дыхание, следить за тем как работает шайтан-машина. |
| Автор: RussianBB 5.8.2008, 14:53 |
| source777, 1. а где gem 1.2.4 найти, гугл не рулит?:( буду очень признателен за ссылочку |
| Автор: RussianBB 5.8.2008, 15:26 |
| так, нашел-таки и установил. а в Aptana или NetBeans надо как-то прописывать или после инсталляции там теперь будет эта версия использоваться? |
| Автор: source777 5.8.2008, 22:17 | ||
А вот после создания проекта открывай его уже где хочешь... |
| Автор: RussianBB 6.8.2008, 00:12 |
| source777: спасибо, на данном этапе разобрался |
| Автор: yart 12.4.2010, 09:41 | ||||||||
| Извиняюсь за некрофилию, но всё же решил написать свой вопрос именно сюда. Немного предыстории: около месяца назад начал вникать в ruby на компе с ubuntu 9.04. Для начала поюзал чистый ruby 1.8.7, затем решил переезжать на рельсы 2.3.5. Руби ставил из стандартного убунтовского репозитория, оттуда же ставил RubyGems. Всё остальное посредством gem install. Изучать Рельсы решил по книжке Agile web development on Rails во втором издании, в русском переводе (да, понимаю, что лучше на английском и в третьем издании, но не настолько свободно владею английским, чтобы можно было это делать сейчас). По ходу дела наступил на те же грабли со scaffold'ом. Воспользовался советом приведённым на предыдущей странице - установил рельсы версии 1.2.4 и пошёл по второму изданию книжки. Теперь вопрос(ы): с самого начала начал выпадать вот такой ворнинг (не только для script/server, вообще для всех скриптов, которые задействуются в книжке):
Как я понимаю, метод search более неактуален, и предлагается заменить его на find_name. Я подозреваю, что надо где-то прописать нечто вроде:
и закрыть на этом тему. Вопрос: а где именно надо это прописать? Еще вопрос: а надо ли именно так, или есть какой-то другой способ решить это дело? И еще вопрос: а надо ли вообще с этим ворнингом бороться? Спрашиваю к тому, что когда добрался до очередного шага (А4), в котором в файл list.rhtml добавляется следующий код:
получил ошибку NoMethodError in Admin#index: интерпретатор не может опознать метод length, который используетсяв в методе truncate.
Не то чтобы я без него (truncate) не могу сейчас обойтись, но всё же неприятно, что какие-то куски авторского кода отказываются работать. Вопрос: с чем это связано и как это дело пофиксить? |
| Автор: source777 12.4.2010, 12:30 |
| Не, ну ладно в 2008-ом году, но в 2010-ом учить RoR 1.2.4 - это абсолютно пустая трата времени. Учи для начала английский язык лучше, если ты не будешь знать английского на уровне достаточном для чтения технических книг и просмотра технического видео, то все остальные усилия, приложенные к изучению RoR, пройдут даром. |