Rails: как создать более одной формы с кнопкой отправки, выполняющей разные функции?

Я хочу создать более одной формы с кнопкой отправки, чтобы каждая кнопка отправки выполняла разные действия/функции.
Как этого добиться? На данный момент все кнопки отправки принимают метод создания контроллера в качестве своей функции действия. Как переопределить это? Могу ли я дать имя каждой кнопке отправки и перенаправить действие каждой кнопки на другой метод в ее файле контроллера?
Как это сделать? Я использую рельс 3.0.1.


person Hemanth    schedule 07.11.2010    source источник
comment
Чтобы уточнить: у вас есть несколько форм с кнопками отправки в каждой форме? Или у вас есть одна форма с несколькими кнопками отправки внутри?   -  person codykrieger    schedule 07.11.2010
comment
Хм, в моем случае несколько форм в одной модели с кнопками отправки.   -  person Hemanth    schedule 07.11.2010


Ответы (1)


Если вы используете вспомогательный метод form_for, я полагаю, что он использует new_record? для любого объекта, который вы ему передаете, чтобы определить правильное действие, на которое он должен указывать. Например:

<%= form_for @page do |f| %>

Если @page.new_record? оценивается как true, форма будет выполнять POST для метода create в PagesController. Однако, если он оценивается как false, он будет выполнять POST для метода обновления в PagesController.

Вы можете переопределить URL-адрес формы POST, выполнив что-то вроде:

<%= form_for @page, :url => { :action => "my_action" } do |f| %>

Это позволит вам отправить данные формы в пользовательское действие. Вам не нужно ничего менять в кнопках отправки.

Надеюсь, это поможет!

person codykrieger    schedule 07.11.2010