2014-02-08 3 views
0

В настоящее время я изучаю RoR, и у меня есть проблема с пониманием вспомогательного метода. Этот пример из рубиновых направляющих.Метод помощника в рельсах

Итак, когда я нажимаю кнопку Отправить форму в этом примере, я вызываю метод create в контроллере. Но, когда я нажимаю кнопку «назад», я иду на index действие.

<%= form_for :post, url: posts_path do |f| %> 
    <p> 
    <%= f.label :title %><br> 
    <%= f.text_field :title %> 
    </p> 

    <p> 
    <%= f.label :text %><br> 
    <%= f.text_area :text %> 
    </p> 

    <p> 
    <%= f.submit %> 
    </p> 
<% end %> 

<%= link_to "Back", posts_path %> 

Почему с такой же URL posts_path (это вспомогательный метод, не так ли?) У меня есть разные результаты?

+0

Кнопка «Назад» в вашем браузере не имеет ничего общего с Ruby on Rails. Является ли эта форма на вашей индексной странице? В этом случае вы были на странице индекса, вы отправили форму, нажали «назад» в своем браузере, чтобы перейти на страницу, на которой вы были, это был индекс. – MrDanA

ответ

1

метод HTTP отличается в вашем случае

method: POST, posts_path -> create action 
method: GET, posts_path -> index action 

Глядя на результат rake routes | grep post даст вам некоторое представление о

+0

Теперь, я вижу :) спасибо вам большое – bkowalczyyk

0

Перенаправление использует GET, в то время как форма использует POST.

0

Разница в том, что форма отправляет запрос POST на номер posts_path, а обратная кнопка - GET. Это обычный способ REST Rails обрабатывает свои ресурсы. Посмотрите на rails docs для получения дополнительной информации.

Смежные вопросы