Rails: изменение действия формы с submit_tag - PullRequest
4 голосов
/ 24 ноября 2010

У меня есть форма, которая всегда отправляет форму функции «update» в контроллере, и я создал эту форму, используя тег «remote_form_for». В этой форме у меня есть объекты из разных таблиц, и из этой формы я хочу отправить все данные формы в другую функцию (не в функцию "update") через запрос AJAX.

Я пробовал много способов, включая использование тега submit с действием

<% remote_form_for @employee, :url => organization_employee_path(@organization, @employee), :method => :put do |employee_form| %>
  // form objects and other functionalities
     ....
     ....  
         // views inside the forms
         <div id="employee_header_div">
           <%= render :partial => "employee_header", :locals => {:employee => @employee} %>
         </div>
         ...
         ... 
     <%= submit_tag "page_level_validation", :id => "page_level_validation" , :action=>"validate"%>
 <% end %>

Но запрос Ajax всегда вызывает одну и ту же функцию обновления.

Было бы очень полезно, если бы кто-то помог решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 02 июня 2016

Нельзя настроить отправку так, чтобы она указывала на место, отличное от указанного в основной форме (если только вы не хотите использовать атрибут формирования HTML5 и работать с последствиями совместимости браузера).

Однако, то, что вы могли бы сделать, это создать новое действие в вашем контроллере, которое имеет дело с ситуацией.

например.

<% remote_form_for @employee, :url => organization_employee_validate_path(@organization, @employee), :method => :put do |employee_form| %>

в вашем контроллере

def validate
    #do something loosely based around the update method
end

не забывая добавить соответствующие маршруты.

0 голосов
/ 02 декабря 2010

Попробуйте это:

<% form_for @employee, :remote => true, :url => organization_employee_path(@organization, @employee), :method => :put do |employee_form| %>
...