В документации могут быть ответы, но я, кажется, не нахожу хороших ответов. Итак, среди трех: url,: action,: method, каковы их различия при использовании в form_for in Rails?
Различия RoR между: url,: action,: method в form_for
Ответ 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.