Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Каким образом RoR изменяет HTTP заголовок? и др. 
:(
    Опции темы
pupadupa
  Дата 9.12.2008, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый вечер.

Возник вопрос: Каким образом RoR изменяет HTTP заголовок?  ...и несколько других вопросов (см. ниже) 
Исходя из REST (http://www.taknado.com/2007/8/31/rest-on-rails) , то чтобы запустить Destroy клиент должен отправить ссылку на объект (ресурс) + DELETE (в HTTP заголовке).


Пример:

из файла index.html.erb 
Код

<% for moloko in @molokos %>
  <tr>
    <td><%=h moloko %></td>
    <td><%=h moloko.title %></td>
    <td><%= link_to 'Show', moloko %></td>
    <td><%= link_to 'Edit', edit_moloko_path(moloko) %></td>
    <td><%= link_to 'Destroy', moloko, :confirm => 'Are you sure?', :method => :delete %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New moloko', new_moloko_path %>

сервер генерит для клиента HTML-код:
Код

<h1>Listing molokos</h1>
<table>
  <tr>
    <td>moloko123</td>
    <td>123</td>
    <td><a href="/molokos/4">Show</a></td>
    <td><a href="/molokos/4/edit">Edit</a></td>
    <td><a href="/molokos/4" onclick="if (confirm('Are you sure?')) { var f = document.createElement('form'); f.style.display = 'none'; 
this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m = document.createElement('input'); m.setAttribute('type', 'hidden');
m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);var s = document.createElement('input'); 
s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token'); s.setAttribute('value', 'd5985dabf272c2f2e75a4db8cd7e42a30f62ab07'); 
f.appendChild(s);f.submit(); };return false;">Destroy</a></td>

  </tr>
</table>

<br />

<a href="/molokos/new">New moloko</a>


</body>
</html>


Вопросы:
1) Непонятно где менятется HTTP заколовок например на delete ? в javascript коде не разобрался, самое похожее там это m.setAttribute('value', 'delete');    но что в этой строке делается - непонятно.
2) Edit делается просто по ссылке (/molokos/4/edit), а почему не сделать, чтобы и delete был по ссылке, по наналогии /molokos/4/delete ?  Я понимаю, что в этом подход REST, но не вижу необходимости так заморачиваться, возможно там есть скрытый/глубокий смысл в необходимость использовать изменение HTTP заголовка вместо  использования /molokos/4/delete 
3) Методы edit_moloko_path(moloko) и new_moloko_path понятны. Есть где-нить описания методов этих (и других им подобных) ? Откуда эти методы определяют путь, может в каком файле прописано ?

Спасибо.

З.Ы. Прошу прощения за вопросы глупые, но учить RoR начал недавно, а разобраться хочется детально. Надеюсь Ваши ответы также помогут в будущем новым новичкам smile

Это сообщение отредактировал(а) pupadupa - 9.12.2008, 21:27
PM MAIL   Вверх
source777
Дата 10.12.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(pupadupa @  9.12.2008,  21:19 Найти цитируемый пост)
возможно там есть скрытый/глубокий смысл в необходимость использовать изменение HTTP заголовка вместо  использования /molokos/4/delete 

Угу, этот скрытый смысл является одним из основных правил веб-программирования, которое обязан знать каждый веб-программист: метод GET применяется для запросов, не меняющих информацию на сервере,  и больше не для чего!!! 
http://www.w3.org/2001/tag/doc/whenToUseGet.html


Цитата(pupadupa @  9.12.2008,  21:19 Найти цитируемый пост)
Откуда эти методы определяют путь, может в каком файле прописано ?
В ./config/routes.rb это прописано.


Цитата(pupadupa @  9.12.2008,  21:19 Найти цитируемый пост)
Прошу прощения за вопросы глупые, но учить RoR начал недавно, а разобраться хочется детально.

Тут дело не в RoR, а в том, что ты не знаешь основ HTTP и REST, а без этой базы RoR начинать изучать не очень разумно...

Это сообщение отредактировал(а) source777 - 10.12.2008, 13:52


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


Новичок



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

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



Спасибо! 
Буду разбираться в дальше.

Вот ещё мне ответили в гугл группе "RubyOnRails to russian" (кому-нить ещё пригодится):


"...The PUT and DELETE methods are not always implemented by web
clients. And some firewalls block their use..."

"There is just one difference: because of the problems with HTTP's PUT
and DELETE methods (mentioned above), Rails permits these
communications to be transmitted using POST provided the data has a
field called _method that is set to either put or delete"

f.method = 'POST'; // ПОСТим
// создаем хайден вар _method и присваеваем ей значение нужного
хедера.
var m = document.createElement('input');
m.setAttribute('type', 'hidden');
m.setAttribute('name', '_method');
m.setAttribute('value', 'delete');

> 3) Методы edit_moloko_path(moloko) и new_moloko_path понятны. Есть где-

нить описания методов этих (и других им подобных) ? Откуда эти методы
определяют путь, может в каком файле прописано ?

rake routes 


еще. по 2-му пункту почитайте http://www.oucs.ox.ac.uk/rails/howtos/rest/handout.pdf
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

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

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


 




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


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

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