Ответ 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