![]() |
|
|
![]()
|
|
| segods |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 14.2.2008 Репутация: нет Всего: нет |
Делаю пример из книги и столкнулся с 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"} Это сообщение отредактировал(а) segods - 17.2.2008, 14:34 |
||||||
|
|||||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Из Rails 2.0 был убран динамический скаффолдинг, за не надобностью... Те, кому его не хватает могут воспользоваться плагином active_scaffold...
Читай тут -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| segods |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 14.2.2008 Репутация: нет Всего: нет |
Почитал. Спасиб.
Но подскажи как мне добавить скаффолдинг именно в мой контроллер admin ? Ибо если выполнить ./script/generate scaffold product то по url /admin/ ничего не работает. |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Не внимательно ты читал похоже, надо
А контроллер будет согласно соглашению об именах называться products, а не admin... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| segods |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 14.2.2008 Репутация: нет Всего: нет |
Хорошо, напишу я ./script/generate scaffold product title:string description:text image_url:string По соглашению о именах контроллер будет называться products, а что надо сделать что бы поменять контроллер на admin? ЗЫ: как же сложно переходить с гибких языков на шаблонизированные... |
|||
|
||||
| source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Я так понимаю ты хочешь сделать админку? ну так и сделай её по-человечески при помощи before-фильтров и одного роута map.connect 'admin/:controller/:action/:id'
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
| segods |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 14.2.2008 Репутация: нет Всего: нет |
Неа, с 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 |
|
||||||||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Во-первых, РНР - это по большому счёту всего лишь шаблонизатор, а RoR - это не язык, а фреймворк, который использует самый гибкий из ныне существующих языков программирования Ruby. Просто RoR расчитан на опытных веб-разработчиков, которые понимают смысл MVC, если ты привык писать всё с ходу и на коленке, то RoR тебе будет совершенно не понятен, в смысле почему сделано именно так, а не иначе... Я лично делаю на РНР всё примерно так же как реализовано в RoR, но много времени ушло в РНР для того чтобы прийти к этому верному подходу, а в RoR уже всё готово, и это настоящее чудо...
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||||||||||||||
|
|||||||||||||||||
| segods |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 14.2.2008 Репутация: нет Всего: нет |
А что надо прописать для того что бы админка была не тут 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 Присоединённый файл ( Кол-во скачиваний: 88 )
routes.rb 1,50 Kb |
||||
|
|||||
| source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
В роутах верно прописал, а не работает из-за того, что скаффолдинг обламывается, т.к. ты вручную уже создал "модель product, миграцию для нее.", удали их и запусти скаффолдинг ещё раз.
Это сообщение отредактировал(а) source777 - 17.2.2008, 21:22 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
| segods |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 14.2.2008 Репутация: нет Всего: нет |
source777, спасибо тебе.
Супер! Получилось. Все отлично, только немного не нравится что помимо http://localhost:3000/admin/products/ этот интерфейс доступен по http://localhost:3000/products/ Не очень хорошо когда любой юзер с "улицы" сможет редактировать/удалять записи в БД. Догадываюсь что, что то надо подправить в routes.rb . Что именно? И есть ли где инфа про синтаксис этого файла? (по оглавлению в книгах не заметил) |
|||
|
||||
| source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
чего уж там, все когда-то так писали, главное чтобы это осталось в прошлом
При этом лучше поместить функцию проверки авторизации в application.rb Добавлено через 1 минуту и 48 секунд Однако я всё-таки советую тебе спокойно читать книгу, а не париться преждевременно по таким пустякам, лишь из-за того, что ты до каких-то моментов ещё не дочитал... Добавлено через 4 минуты и 14 секунд
подсказываю, стр. 404 и т.д. Добавлено через 9 минут и 26 секунд Кстати чтобы всё-таки реализовать твою мечту, http://localhost:3000/admin/, надо вписать маршрут map.connect 'admin/:action/:id', :controller => 'products' -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: нет Всего: 27 |
Кстати, столкнулся с такой же проблемой, что вся newbie инфомация, книги и т.п. по rails 1.2
Но, что хорошо, обе версии могут спокойно сосуществовать. Я решил для себя учить по версии 1.2 и когда буду готов, перейду на 2.0 просто доставляешь. gem install -v1.2.4 --include-dependencies rails. делаешь проект rails _1.2.4_ <имя проекта> и погнал по книжке. -------------------- ![]() |
|||
|
||||
| Volniy_Strelok |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 13.9.2007 Репутация: нет Всего: нет |
fixxer, Спасибо очень помогло
|
|||
|
||||
| tanship |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 7.7.2008 Репутация: нет Всего: нет |
|
|||
|
||||
| RussianBB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
Народ, помогите новичку, пожалуйста!
можете подробно рассказать как это делать? на всякий случай - я работаю в Aptana Studio. Заранее, огромное спасибо, замучился уже Это сообщение отредактировал(а) RussianBB - 5.8.2008, 13:50 |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
1) Вылезти из чума 2) Открыть консоль/терминал 3) Набрать команду 4) Нажать Enter 5) Затаив дыхание, следить за тем как работает шайтан-машина. -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| RussianBB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
source777,
1. а где gem 1.2.4 найти, гугл не рулит?:( буду очень признателен за ссылочку |
|||
|
||||
| RussianBB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
так, нашел-таки и установил. а в Aptana или NetBeans надо как-то прописывать или после инсталляции там теперь будет эта версия использоваться?
|
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
А вот после создания проекта открывай его уже где хочешь... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| RussianBB |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.8.2008 Репутация: нет Всего: нет |
source777: спасибо, на данном этапе разобрался
|
|||
|
||||
| yart |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 12.4.2010 Репутация: нет Всего: нет |
Извиняюсь за некрофилию, но всё же решил написать свой вопрос именно сюда.
Немного предыстории: около месяца назад начал вникать в 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) не могу сейчас обойтись, но всё же неприятно, что какие-то куски авторского кода отказываются работать. Вопрос: с чем это связано и как это дело пофиксить? Это сообщение отредактировал(а) yart - 12.4.2010, 10:11 |
||||||||
|
|||||||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Не, ну ладно в 2008-ом году, но в 2010-ом учить RoR 1.2.4 - это абсолютно пустая трата времени. Учи для начала английский язык лучше, если ты не будешь знать английского на уровне достаточном для чтения технических книг и просмотра технического видео, то все остальные усилия, приложенные к изучению RoR, пройдут даром.
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
![]()
|
| Правила форума "Ruby on Rails" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Ruby On Rails | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |