2010-11-24 2 views
4

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

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

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

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

+0

не могли бы вы высказать свой код? Кроме того, версия Rails, которую вы используете ... `form_remote_for` устарела в Rails 3 – 2010-11-24 05:53:09

ответ

-1

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

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

Вы не можете установить представить, чтобы указать на другое место, чем основная форма указала (если вы не хотите использовать атрибут formaction 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 

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

Смежные вопросы