4 votes

Les paramètres URL apparaissent dans la barre d'adresse bien que l'utilisation de POST

Je suis nouveau sur ROR mais je suis confronté à ce problème : dans la page d'index, j'ai

<%= button_to 'Yes', { :action => 'vote', :id => poll.id, :user_answer => 'yes' }, :method => :post  %>

lorsque l'utilisateur appuie sur le "bouton Oui", l'url qui est passée au contrôleur contient tous les paramètres explicitement à l'utilisateur.

vote?id=1&user_answer=yes

dans routes.rb j'ai :

match 'vote' => 'polls#vote', :via => :post 

Toute aide est appréciée

edit : l'intégralité de l'index.html.erb

Sondages

 <% @polls.each do |poll| %>
   <p>
   <%= poll.question %>?
   <%= button_to 'Yes', { :action => 'vote', :id => poll.id, :user_answer => 'yes' }, :method => :post %> (<%= poll.yes %>) /
   <%= button_to 'No', { :action => 'vote', :id => poll.id, :user_answer => 'no' }, :method => :post %> (<%= poll.no %>)
   </p>
 <% end %>

0voto

rb512 Points 3157

La méthode par défaut pour button_to est post, il n'est donc pas nécessaire de la spécifier explicitement, sauf si vous souhaitez utiliser d'autres verbes (get, put).

Si vous n'aimez pas que les paramètres soient ajoutés à l'url, vous pouvez utiliser un formulaire à la place.
Ou bien, ajoutez simplement le hash du formulaire à votre balise button_to :

<%= button_to 'Yes', { :action => 'vote', :id => poll.id, :user_answer => 'yes' }, :form => {:data_type => <your choice (html, json)> %>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X