Различия RoR между: url,: action,: method в form_for

В документации могут быть ответы, но я, кажется, не нахожу хороших ответов. Итак, среди трех: url,: action,: method, каковы их различия при использовании в form_for in Rails?

Ответы

Ответ 1

Разница между :url, :action и :method

: URL

Если вы хотите отправить свою форму для какого-либо конкретного контроллера, какое-либо конкретное действие и хотите передать какой-то дополнительный параметр (используйте действие, определяемое контроллером, которое вы передаете контроллеру)

например

<%= form_for @post, :url => {:controller => "your-controller-name", :action => "your-action-name"} do |f| %>

В приведенном выше коде форма передается этому контроллеру (который вы передаете по URL-адресу) и переходите к действию (вы передаете действие). он будет принимать значения по умолчанию для текущего действия.

теперь предположим, что вы хотите передать дополнительный параметр, затем , например

form_for @post, :url => { :action => :update, :type => @type, :this => @currently_editing } do |f| ...

вы можете передать дополнительный параметр, например :type => @type

поэтому :url - это URL-адрес, на который отправлена ​​форма. Он принимает те же поля, которые вы передаете url_for или link_to. В частности, вы можете передать здесь именованный маршрут напрямую.


: действие

 form_for @post, :url => { :action => :update, :type => @type, :this => @currently_editing } do |f| ...

В приведенном выше примере мы передаем :action, если мы хотим представить форму в другом действии, тогда мы передаем :action и your-action-name форму post для этого действия


: Метод

используется метод, который вы хотите передать для этого действия. Существует несколько методов, таких как put, post, get...

например

form_for @post, :url => post_path(@post), :method => :put, ....

В приведенном выше form_for мы передаем :method => :put, когда эта форма будет отправлена, будет использоваться метод put

Ответ 2

form_for в основном используется на объекте. Например:

      <% form_for @person do |f| %>
       ...
      <% end %>

Когда вы нажмете кнопку "Отправить", он перейдет к действию по умолчанию, например, от: new to: create,: edit = > : update. Если вы хотите указать свое собственное действие, то вы должны использовать: url и: метод используется для принудительной публикации или получения. Например:

      <% form_for @person :url => {:action => "my_action"}, :method => "post" do |f| %>
       ...
      <% end %>

Ответ 3

URL:

Url - это путь, по которому должны идти ваши данные формы. что вы пишете внутри символа: url рассматривается как путь, по которому ваши данные должны идти, когда вы нажимаете кнопку отправки в форме.

Действие:

Действие - это метод в вашем контроллере, в вашем form_for @user (где @user - объект модели пользователя), если вы говорите: action = > create, то он передаёт данные функции users_controller 'create' (def create). Вы упомянули это внутри: url, чтобы сообщить, что данные должны перейти к указанному действию.

Метод:

Является методом http, есть методы "get", "post", "update", "patch" и "delete". Об этом можно узнать в google.