| 2008-08-02 20:26:42 | Ответить |
|---|---|
|
Антон Адрес: Сообщений: 7 Регистр: 2008-08-02 его блог 0 сообщ. |
:method=>"delete", а в контроллере destroy |
|
Здрасте всем.
Тут такая проблема. Есть таблица categories и в модели прописано acts_as_tree. В контроллере метод destroy прописан так: def destroy @category = Category.find(params[:id]) @category.destroy respond_to do |format| format.html { redirect_to(articles_url) } format.xml { head :ok } end end в представлении индекс строка: 'Are you sure?', :method => "destroy"%> вызывает ошибку "500 internal server error" но если заменить в ней :method => "destroy" на :method =>"delete" (особая магия какая-то), то эта ошибка уже не появляется, а появляется другая. Mysql::Error: Unknown column 'Category' in 'order clause': SELECT * FROM `categories` WHERE (categories.parent_id = 21) ORDER BY Category Эта ошибка мне больше нравится, но тут тоже непонятно, как ее исправить. Может кто подскажет? |
|
| :method=>destroy, acts_as_tree, internal, parent_id |
| 2008-08-02 22:23:36 | Ответить |
|---|---|
|
Ruslan Voloshin Адрес: odessa Сообщений: 1293 Регистр: 2007-03-13 его блог 40 сообщ. |
RE: :method=>"delete", а в контроллере destroy |
|
на счет destroy и delete тебе стоит внимательно почитать особенности ресурсов.
------------
а сиквельная ошибка появляется, так смотри что приходит и как это работает. Удобней вообще то это все делать под линуксом, или же поставить cigwin Занимаюсь вебом и продвижением сайтов.
|
|
| 2008-08-02 22:58:35 | Ответить |
|---|---|
|
Антон Адрес: Сообщений: 7 Регистр: 2008-08-02 его блог 0 сообщ. |
RE: RE: :method=>"delete", а в контроллере destroy |
|
Короче нашел я в чем ошибка )
Как всегда обидная ) в модели category.rb было написано: acts_as_tree :order = name а надо было acts_as_tree :order = 'name' так как я не поставил эти апострафы, он по умолчанию вместо name подставил имя модели и в запросе к БД пытался упорядочить по полю category, которого нет... Вот так вот. И где почитать про ресурсы можно? А почему под линем или cigwin удобнее? |
|
| 2008-08-03 09:31:55 | Ответить |
|---|---|
|
Roman V. Babenko Адрес: Kyiv Сообщений: 310 Регистр: 2008-04-22 его блог 6 сообщ. |
RE: RE: RE: :method=>"delete", а в контроллере destroy |
|
ИМХО, шо даже так
------------
acts_as_tree :order => :name Под "линем" у тебя нормальная поддержка utf-8, нормальный shell(bash). Ну и в конечном то итоге приложение будет работать под какой нить OSX, так и разрабатывать логично под ней. А ошибки 500 надо ловить не руками, а внимательно читать {app}/log/development.log или какой там у тебя режим запущен. http://romanvbabenko.blogspot.com
Если в споре не родилась истина, то, по крайней мере, один из спорящих бесплоден.
|
|
| 2008-08-03 12:06:32 | Ответить |
|---|---|
|
Антон Адрес: Сообщений: 7 Регистр: 2008-08-02 его блог 0 сообщ. |
RE: RE: RE: RE: :method=>"delete", а в контроллере destroy |
|
Спасибо огромное. Очень полезная информация )
|
|
| 2008-08-03 13:55:15 | Ответить |
|---|---|
|
Ruslan Voloshin Адрес: odessa Сообщений: 1293 Регистр: 2007-03-13 его блог 40 сообщ. |
RE: RE: RE: RE: RE: :method=>"delete", а в контроллере destroy |
|
просто под линуксом ты в онлайне будешь видеть в логах все происходящее
------------
или тоже самое под cigwin Занимаюсь вебом и продвижением сайтов.
|
|
| cigwin, tail |
| 2008-12-08 14:54:46 | Ответить |
|---|---|
|
pupadupa Адрес: Сообщений: 2 Регистр: 2008-12-08 его блог 0 сообщ. |
RE: :method=>"delete", а в контроллере destroy |
|
Добрый день.
Решил продолжить тему: Мне вот тоже непонятно откуда и зачем берётся delete (при автоматической генерации scaffold),а destroy не используется во вью: файл index.html.erb : файл posts_controller.rb: Почему создаётся метод Destroy, а во view используется delete ? Спасибо. |
|
| 2008-12-08 17:32:10 | Ответить |
|---|---|
|
pupadupa Адрес: Сообщений: 2 Регистр: 2008-12-08 его блог 0 сообщ. |
RE: :method=>"delete", а в контроллере destroy |
|
вроде разобрался:
я так понял, что в этой строчке delete это как раз передоваемый от клиента к серверу HTTP заголовок, а не метод класса (как я подумал). Т.о. получается, что ресурсу (в терминологии REST ) передаётся: url (ссылка по которой мы переходим) + DELETE (в HTTP заголовке) и ресурс отвечает на это методом DESTROY (метод описанный в контроллере). Я правильно понял? З.Ы. мда... интересный подход! если честно я про HTTP то и не думал никогда З.З.Ы. ссылка которая помогла разобраться http://www.taknado.com/2007/8/31/rest-on-rails |
|