Поиск:

Закрытая темаСоздание новой темы Создание опроса
> undefined method `scaffold', undefined method `scaffold' 
:(
    Опции темы
segods
  Дата 17.2.2008, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Делаю пример из книги и столкнулся с undefined method `scaffold'
В чем дело?
Код

I:\InstantRails-2.0-win\rails_apps>ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

I:\InstantRails-2.0-win\rails_apps>rails -v
Rails 2.0.2

I:\InstantRails-2.0-win\rails_apps>


САМ пример контролера:
Код

class AdminController < ApplicationController
    scaffold :product
end

И миграции:
Код

class CreateProducts < ActiveRecord::Migration
  def self.up
    create_table :products do |t|
      t.column :title, :string
      t.column :description, :text
      t.column :image_url, :string
    end
  end

  def self.down
    drop_table :products
  end
end





И сама страничка:

 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
PM MAIL   Вверх
source777
Дата 17.2.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Из Rails 2.0 был убран динамический скаффолдинг, за не надобностью... Те, кому его не хватает могут воспользоваться плагином active_scaffold...
Читай тут


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
segods
Дата 17.2.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Почитал. Спасиб.
Но подскажи как мне добавить скаффолдинг именно в мой контроллер admin ?

Ибо если выполнить
./script/generate scaffold product
то по url /admin/ ничего не работает.
PM MAIL   Вверх
source777
Дата 17.2.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Не внимательно ты читал похоже, надо 
Цитата

./script/generate scaffold product field1:type field2:type field3:type

А контроллер будет согласно соглашению об именах называться products, а не admin...


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
segods
  Дата 17.2.2008, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Цитата(source777 @  17.2.2008,  16:51 Найти цитируемый пост)
А контроллер будет согласно соглашению об именах называться products, а не admin... 

Хорошо, напишу я ./script/generate scaffold product title:string description:text image_url:string

По соглашению о именах контроллер будет называться products, а что надо сделать что бы поменять контроллер на admin?

ЗЫ: как же сложно переходить с гибких языков на шаблонизированные...
PM MAIL   Вверх
source777
Дата 17.2.2008, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(segods @  17.2.2008,  17:10 Найти цитируемый пост)
По соглашению о именах контроллер будет называться products, а что надо сделать что бы поменять контроллер на admin?
Что-то я никак не пойму зачем тебе контроллер admin? Это ж неинтуитивное название, попробуй догадайся, что admin обначает продукты, я б не догадался...
Я так понимаю ты хочешь сделать админку? ну так и сделай её по-человечески при помощи before-фильтров и одного роута 
map.connect 'admin/:controller/:action/:id'

Цитата(segods @  17.2.2008,  17:10 Найти цитируемый пост)
ЗЫ: как же сложно переходить с гибких языков на шаблонизированные...
с Ruby на PHP что ли?






--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
segods
  Дата 17.2.2008, 19:32 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Цитата(source777 @  17.2.2008,  18:57 Найти цитируемый пост)
Цитата(segods @  17.2.2008,  17:10 Найти цитируемый пост)
ЗЫ: как же сложно переходить с гибких языков на шаблонизированные...
с Ruby на PHP что ли?

Неа, с PHP на RoR ! 
Может быть только с начала у новичков складывается такое впечатление(надеюсь), но я уже больше всех ненавижу RoR. Нервная система уже дымится...
На ПХП я бы этот долбаный интернет-магазин дааааавно написал бы, т.к где угодно и что угодно могу писать, а в RoR нет.
(извините, я на эмоциях)


Цитата(source777 @  17.2.2008,  18:57 Найти цитируемый пост)
Что-то я никак не пойму зачем тебе контроллер admin? Это ж неинтуитивное название, попробуй догадайся, что admin обначает продукты, я б не догадался...
Я так понимаю ты хочешь сделать админку? ну так и сделай её по-человечески при помощи before-фильтров и одного роута 
map.connect 'admin/:controller/:action/:id'

И так ситуация в крации:
-Купил все что связано с Руби и было на озоне, в том числе: "Гибкая разработка веб-приложений в среде 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 ?
PM MAIL   Вверх
source777
Дата 17.2.2008, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(segods @  17.2.2008,  19:32 Найти цитируемый пост)
Неа, с PHP на RoR ! Может быть только с начала у новичков складывается такое впечатление(надеюсь), но я уже больше всех ненавижу RoR. Нервная система уже дымится...На ПХП я бы этот долбаный интернет-магазин дааааавно написал бы, т.к где угодно и что угодно могу писать, а в RoR нет.
Во-первых, РНР - это по большому счёту всего лишь шаблонизатор, а RoR - это не язык, а фреймворк, который использует самый гибкий из ныне существующих языков программирования Ruby. Просто RoR расчитан на опытных веб-разработчиков, которые понимают смысл MVC, если ты привык писать всё с ходу и на коленке, то RoR тебе будет совершенно не понятен, в смысле почему сделано именно так, а не иначе... Я лично делаю на РНР всё примерно так же как реализовано в RoR, но много времени ушло в РНР для того чтобы прийти к этому верному подходу, а в RoR уже всё готово, и это настоящее чудо...  

Цитата

На ПХП я бы этот долбаный интернет-магазин дааааавно написал бы, т.к где угодно и что угодно могу писать, а в RoR нет.
В этом основная сила Rails, что надо писать правильно, а не "на коленке", как принято у многих РНР-программистов...

Цитата(segods @  17.2.2008,  19:32 Найти цитируемый пост)
map.connect 'admin/:controller/:action/:id'но ситуация остается той же...
В каком смысле такой же? теперь ты можешь использовать УРЛы типа http://localhost:3000/admin/products если конечно прописал туда, куда нужно - первым роутом в routes.rb

Цитата

depot>ruby script/generate scaffold product title:string description:text image_url:string
то создается "представление" и усё...
неа, ещё создаются контроллер, модель и миграция, если ты конечно их не создал до этого, если создал, то скаффолдинг уже не будет работать...


Цитата

Купил все что связано с Руби и было на озоне,
А можно узнать с какой целью? 

Цитата

в том числе: "Гибкая разработка веб-приложений в среде Rails".
я догадался smile, но ты забываешь что это всего лишь демо-приложение, не зацикливайся на нём и читай дальше, либо поставь Rails 1.2 если хочешь делать как в книге...

Цитата

Русские Форумы на пальцах одной руки можно посчитать, а более менее численный только один, этот.
На самом деле этот как раз самый малочисленный, относитально Rails...

Цитата

Что самое страшное, что суппорта вооообще никакого... Книга сама в 2.0 ничего не знает.
А что тут удивительного? она ж вышла почти за год до Rails 2.0.  И что страшного в отсутствии суппорта, он вообще для каких либо свободных фреймворков существует в природе? что-то я сильно сомневаюсь...

Цитата

Как такие простые и элементарные вещи теперь делаются в версии 2.0 ?
Если ты про динамический scaffolding, то я уже сказал, что согласно оффициальной позиции разработчиков он признан совершенно лишним в реальных приложениях, поэтому вынесен в плагин - http://www.activescaffold.com/




--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
segods
Дата 17.2.2008, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



А что надо прописать для того что бы админка была не тут  http://localhost:3000/admin/products , а тут  http://localhost:3000/admin/ ?
Если ты понял по какой книге я вопросы задаю, тогда может сразу посоветуешь что как сделать?
Просто и после генерации даже по http://localhost:3000/admin/products ничего доступно не было.
Код

Unknown action
No action responded to product


Цитата(source777 @  17.2.2008,  20:00 Найти цитируемый пост)
неа, ещё создаются контроллер, модель и миграция, если ты конечно их не создал до этого, если создал, то скаффолдинг уже не будет работать...

По-подробнее поясни. Я создал модель 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
PM MAIL   Вверх
source777
Дата 17.2.2008, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



В роутах верно прописал, а не работает из-за того, что скаффолдинг обламывается, т.к. ты вручную уже создал "модель product, миграцию для нее.", удали их и запусти скаффолдинг ещё раз.


Цитата(segods @  17.2.2008,  20:44 Найти цитируемый пост)
Если ты понял по какой книге я вопросы задаю, тогда может сразу посоветуешь что как сделать?
Точь-в-точь как в книге ты сделаешь только на Rails 1.2...

Цитата

А что надо прописать для того что бы админка была не тут  http://localhost:3000/admin/products , а тут  http://localhost:3000/admin/ ?
Объясни с какой целью это надо? можно конечно просто редирект в роутах поставить, только нафига? Потом управление пользователями будешь на http://localhost:3000/admin2/ делать что ли? а заказами - на http://localhost:3000/admin3/ ?

Это сообщение отредактировал(а) source777 - 17.2.2008, 21:22


--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
segods
  Дата 17.2.2008, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



source777, спасибо тебе.
Супер! Получилось.
Все отлично, только немного не нравится что помимо http://localhost:3000/admin/products/ этот интерфейс доступен по http://localhost:3000/products/
Не очень хорошо когда любой юзер с "улицы" сможет редактировать/удалять записи в БД.
Догадываюсь что, что то надо подправить в routes.rb . Что именно?
И есть ли где инфа про синтаксис этого файла? (по оглавлению в книгах не заметил)

PM MAIL   Вверх
source777
Дата 17.2.2008, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(segods @  17.2.2008,  20:44 Найти цитируемый пост)
ну на коленке никогда не писал,
чего уж там, все когда-то так писали, главное чтобы это осталось в прошлом smile 

Цитата

Не очень хорошо когда любой юзер с "улицы" сможет редактировать/удалять записи в БД.
как я уже писал, но ты не обратил внимания, тебе нужен before-фильтр, см. стр. 460 той книги, которую ты читаешь smile 
При этом лучше поместить функцию проверки авторизации в application.rb

Добавлено через 1 минуту и 48 секунд
Однако я всё-таки советую тебе спокойно читать книгу, а не париться преждевременно по таким пустякам, лишь из-за того, что ты до каких-то моментов ещё не дочитал...

Добавлено через 4 минуты и 14 секунд
Цитата(segods @  17.2.2008,  22:08 Найти цитируемый пост)
И есть ли где инфа про синтаксис этого файла? (по оглавлению в книгах не заметил)
Силён ты батенька, раз в алфавитном указателе не нашёл пункт "routes.rb, файл" smile 
подсказываю, стр. 404 и т.д.

Добавлено через 9 минут и 26 секунд
Кстати чтобы всё-таки реализовать твою мечту,  http://localhost:3000/admin/, надо вписать маршрут 
map.connect 'admin/:action/:id', :controller => 'products'




--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
fixxer
Дата 18.2.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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_ <имя проекта> и погнал по книжке.


--------------------
user posted image
PM MAIL ICQ   Вверх
Volniy_Strelok
Дата 28.5.2008, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 13.9.2007

Репутация: нет
Всего: нет



fixxer,  Спасибо очень помогло
PM   Вверх
tanship
Дата 7.7.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.7.2008

Репутация: нет
Всего: нет



 smile!!!  спасибо и мне помогло
PM MAIL   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0591 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.