Rails: изменить действие формы с submit_tag

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

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

<% 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 всегда вызывает одну и ту же функцию «обновления».

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


person Sushanth CS    schedule 24.11.2010    source источник
comment
не могли бы вы опубликовать код просмотра? Кроме того, версия Rails, которую вы используете... form_remote_for устарела в Rails 3   -  person Jasdeep Singh    schedule 24.11.2010
comment
Я использую Rails версии 3.0.0, и мой код представления выглядит следующим образом. ‹% remote_form_for @provider, :url =› company_provider_path(@company), :method =› :put do |provider_form| %›. В этой форме я использую вызов AJAX для обновления значений формы, и теперь я хочу передать те же данные другой функции для проверки. Я использовал тег «‹%= submit_tag page_level_validation, :id =› page_level_validation , :action=›validate%›», но он также передает детали той же «функции обновления» через AJAX.   -  person Sushanth CS    schedule 24.11.2010
comment
Итак, проблема в remote_form_for, который я использую в rails 3. Тогда что я должен использовать вместо него? Я уже написал много функций внутри этой формы. Влияют ли изменения моей формы на эти функции?   -  person Sushanth CS    schedule 24.11.2010


Ответы (2)


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

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

e.g..

<% 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

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

person Carpela    schedule 02.06.2016

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

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