2010-11-24 5 views
4

J'ai un formulaire qui soumet toujours le formulaire à la fonction "update" dans le contrôleur, et j'ai créé ce formulaire en utilisant la balise "remote_form_for". Dans ce formulaire j'ai des objets de différentes tables, et à partir de ce formulaire je veux soumettre des données de formulaire entières à une autre fonction (pas à la fonction "mise à jour") via la requête AJAX.Rails: Modifier l'action de formulaire de submit_tag

J'ai essayé de nombreuses méthodes, y compris l'utilisation de soumettre étiquette avec l'action

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

Mais la demande Ajax appelant toujours la même fonction « mise à jour ».

Ce serait très utile, si quelqu'un aide à résoudre ce problème.

+0

pouvez-vous s'il vous plaît poster votre code d'affichage? En outre, la version Rails que vous utilisez ... 'form_remote_for' est obsolète dans Rails 3 –

+0

J'utilise Rails version 3.0.0 et mon code d'affichage est le suivant. <% remote_form_for @provider,: url => chemin_profession_entreprise (@company),: méthode =>: put do | provider_form | %>. Dans ce formulaire, j'utilise l'appel AJAX pour mettre à jour les valeurs du formulaire et maintenant je veux passer les mêmes détails à une autre fonction pour la validation. J'ai utilisé le tag '<% = submit_tag "page_level_validation",: id => "page_level_validation",: action => "valider"%>' mais il transmet également les détails à la même 'fonction de mise à jour' via AJAX. –

+0

Donc le problème est sur remote_form_for que j'utilise dans les rails 3. Alors qu'est-ce que je devrais utiliser à la place? J'ai déjà écrit de nombreuses fonctionnalités à l'intérieur de ce formulaire. Ma forme change-t-elle également les effets de ces fonctionnalités? –

Répondre

-1

Essayez ceci:

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

Vous ne pouvez pas définir le soumettre à point à un autre endroit que la forme principale a spécifié (sauf si vous souhaitez utiliser l'attribut Formaction HTML5 et faire face aux conséquences de la compatibilité du navigateur). Cependant, ce que vous pourriez faire est de créer une nouvelle action dans votre contrôleur qui traite de la situation.

.. par exemple

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

dans votre contrôleur

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

sans oublier d'ajouter les voies appropriées.

Questions connexes