Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Ruby: Общие вопросы > Откуда берётся ... method => :delete... ? |
Автор: pupadupa 8.12.2008, 05:59 | ||||||
Добрый вечер. Начал изучать RoR. Сгенерил простой weblog (по анологии http://ruby.inuse.ru/video-uroki/razrabotka-ruby-rails-prilozhenii-pri-pomoshchi-netbeans ) т.е. просто scaffold Post title:string . Использую IDE NetBeans В итоге вижу в файле index.html.erb :
Вопрос: почему :method => :delete ? хотя в файле posts_controller.rb записано :
Поиском я нашёл, что есть в проекте файл posts_controller_test.rb и в нём указано:
Но я вот не пойму причём тут этот posts_controller_test.rb ? и где он цепляется у меня ? Если не сложно, объясните на пальцах принцип.... зачем этот posts_controller_test.rb , где он цепляется, почему нельзя использовать :method => :destroy (ошибку сервера выдаёт) ??? Спасибо. |
Автор: shine 8.12.2008, 15:27 |
posts_controller_test.rb - файл с автоматическими тестами для контроллера PostsController. Создается он, насколько я помню, при генерации контроллеров через ruby script/generate. Цепляется он при запуске функциональных тестов или при запуске всех тестов сразу. delete - это HTTP заголовок, а destroy - это интерфейс ресурса Post. То есть это принципиально разные вещи. |
Автор: pupadupa 8.12.2008, 15:47 | ||||
Спасибо. Буду разбираться дальше. а нет какой-нить ссылочки чтобы почитать про это? в гугле найти не могу. Просто как-то странно: создался (при автоматической генерации) класс PostsControllers в нём определён метод destroy, а во вьюхе index.html.erb этот destroy не задействован, а используется delete, который вообще непонятно что такое. Нашёл другой пример (http://www.tutorialspoint.com/ruby-on-rails-2.1/rails-controllers.htm), в нём всё создаётся вручную (без автоматической генерации) и в этом примере всё понятно: 1) Есть book_controller.rb
2) А потом делается view, которая вызывает метод :delete Creating view file for delete method:
Почему при автоматической генерации не так полчается? Очень запутанно как-то. Хочется разобраться детально, в чём разница подходов, в чём плюсы/минусы, почему при автоматической генерации делается так запутанно (как мне показалось) и как это всё работает. Спасибо! |
Автор: shine 8.12.2008, 16:10 |
Почитайте про ресурсы и их реализацию в Rails. Вот неплохая статья: http://www.taknado.com/2007/8/31/rest-on-rails Если нужно очень кратко, то посмотрите 7-ю страницу здесь: http://media.rubyonrails.org/presentations/worldofresources.pdf |
Автор: pupadupa 8.12.2008, 18:29 | ||
Спасибо огромное за ссылки!!!! Начинает прояснятся картина. я так понял, что в этой строчке
delete это как раз передоваемый от клиента к серверу HTTP заголовок, а не метод класса (как я подумал). Т.о. получается, что ресурсу (в http://www.taknado.com/2007/8/31/rest-on-rails) передаётся: url (ссылка по которой мы переходим) + DELETE (в HTTP заголовке) и ресурс отвечает на это методом DESTROY (метод описанный в контроллере). Я правильно понял? З.Ы. мда... интересный подход! если честно я про HTTP то и не думал никогда |