2011-08-21 5 views
0

J'essaie d'utiliser des boutons radio dans l'application Rails. Actuellement, les boutons apparaissent sur la page comme prévu, mais la valeur n'est pas enregistrée lors de la soumission. Je pense que le problème est réellement avec mon bouton de soumission - rien ne se passe quand il est pressé.Enregistrement des valeurs des boutons radio dans les rails

Voici le code de ma page avec les boutons radio:

<div class="form_row> 
<%= form_for @term, :url=>{ :action =>"update_status" } do |f| %> 
    <%= f.radio_button :status, 'on' %><b>On</b> <br/> 
    <%= f.radio_button :status, 'off' %><b>Off</b> <br/> 
    <%= f.radio_button :status, 'leave' %><b>Leave</b> <br/> 
    <div class="actions"> 
    <%= f.submit "Change term status" %> 
    </div> 
<% end %> 
</div> 

Je corrige ma faute de frappe (': actions to: action`), mais il ne fonctionne toujours pas. Voici quelques informations supplémentaires ...

Les boutons radio sont en haut de la page et le reste du formulaire est en dessous d'eux. J'ai deux boutons de soumission différents, un pour les boutons radio, et un pour remplir les informations en blanc au bas de la page. Le second formulaire fonctionne parfaitement, mais lorsque je clique sur le bouton "Change term status" (le bouton qui est censé soumettre les boutons radio en appelant update_status, rien ne se passe.)

Voici tout le code de ma page vue:

<h1> <%= @title %> </h1> 

<div class="form_row> 
<%= form_for @term, :url=>{ :action =>"update_status" } do |f| %> 
    <%= f.radio_button :status, 'on' %><b>On</b> <br/> 
    <%= f.radio_button :status, 'off' %><b>Off</b> <br/> 
    <%= f.radio_button :status, 'leave' %><b>Leave</b> <br/> 
    <div class="actions"> 
    <%= f.submit "Change term status" %> 
    </div> 
<% end %> 
</div> 

<%= form_for @term, :url=>{ :action=>"update" } do |f| %>  
    <div class="field"> 
    <%= f.label :course1, "Course 1" %><br /> 
    <%= f.text_field :course1 %> 
    </div> 
    <div class="field"> 
    <%= f.label :course2, "Course 2" %><br /> 
    <%= f.text_field :course2 %> 
    </div> 
    <div class="field"> 
    <%= f.label :course3, "Course 3" %><br /> 
    <%= f.text_field :course3 %> 
    </div> 
    <div class="field"> 
    <%= f.label :course4, "Course 4" %><br /> 
    <%= f.text_field :course4 %> 
    </div> 
    <div class="actions"> 
     <%= f.submit "Update" %> 
    </div> 
<% end %> 

Et voici deux définitions:

def update 
    @term = Term.find(params[:id]) 
    @[email protected] 
    if @term.update_attributes(params[:term]) 
     flash[:success] = "Edit successful." 
     redirect_to @dplan 
    else 
     flash[:success] = "Error" 
     redirect_to @dplan 
    end 
end 

def update_status 
    @term = Term.find(params[:id]) 
    @[email protected] 
    if @term.update_attributes(params[:term]) 
     flash[:success] = "Term status changed." 
     redirect_to @term 
    else 
     flash[:success] = "Error" 
     redirect_to @term 
    end 
end 

Merci

+0

Votre code fonctionne pour moi. Avez-vous plus d'infos? – auralbee

+0

Le journal indique-t-il que la demande est en cours de publication avec les valeurs attendues? – zetetic

+0

Désolé je suis un peu nouveau à ceci - quel est le journal? – steffi2392

Répondre

2

Compris grâce à http://railscasts.com/episodes/38-multibutton-form! Je suppose que quelque chose d'étrange se produit lorsque vous essayez d'utiliser deux formulaires sur une page, la meilleure façon de le faire était de combiner les formes, mais utilisez une instruction if dans mes termes contrôleur update pour distinguer les deux boutons. Merci pour votre aide!

2

Je pense qu'il ya une erreur dans votre form_for appel: Au lieu d'utiliser :url => { :actions => "update_status" } il devrait être :url => { :action => "update_status" }.

+0

Vous avez raison, j'ai eu cette faute de frappe, mais pour une raison quelconque, il ne fonctionne toujours pas! – steffi2392

+0

Utilisez-vous les appels 'attr_protected' ou' attr_accessible'? Peut-être que le problème est à l'intérieur des modèles. –

Questions connexes