2010-11-14 9 views
6

Cela semble être si simple mais cela m'a causé des problèmes.rails form_tag chemin d'URL

J'ai un select_tag qui tire d'un modèle. Tout ce que je veux, c'est demander à une personne de choisir son emplacement dans le menu déroulant, appuyer sur soumettre et l'amener à cette page.

Voici ce que j'ai

<% form_tag installation_path do %> 
<%= select_tag :id, options_from_collection_for_select(Installation.find(:all), :id, :name) %> 
<div id="button"> 
    <p> 
    <%= submit_tag "Go", :name => nil %> 
    </p> 
</div> 

Le problème est-il bien sûr veut un :id mais il ne sera pas tirer le :id dans le menu déroulant ci-dessous. Qu'est-ce que je fais de mal, d'autres suggestions sur la «bonne» façon de le faire.

Merci

Répondre

5

On dirait que vous voulez vraiment GET, POST ne pas les params.

form_tag installation_path, :method => :get do 
+0

Tout d'abord merci! Utiliser la mauvaise méthode était un problème. Cependant, pour que les routes soient correctes, il faut que cela soit chemin_installation (id). Cependant, l'identifiant tiré est l'identifiant du tableau issu du collection_select. Des idées? Il ne semble pas que cette tâche simple devrait être si difficile. – looloobs

+3

Voici la chose, vous voulez soumettre le formulaire, et allez dans '/ installations /: id'. Au lieu de cela, vous finirez dans '/ installations? Id =: id'. Donc, vous pouvez donner à Rails une route 'match '/ installations',: to => 'installations # show''. Le problème avec cette route est - il est en conflit avec l'index. Donc, vous devriez avoir une route spéciale: 'match '/ goto_installation' => 'installations # show',: as => 'goto_installation''. Ensuite, dans votre formulaire: 'form_tag goto_installation_path,: method =>: get do'. Ensuite, dans le filtre before de votre contrôleur, vous pouvez redirect_to installation_path (: id => params [: id]) 'pour obtenir l'URL désirée. –

+0

Salut, je reviens juste à cela, il s'avère que je ne peux pas utiliser "match" parce que je ne suis pas encore en cours d'exécution rails3. Des idées sur la façon de faire cela. Je ne peux pas comprendre pourquoi c'est si compliqué. Il semble que cela soit fait tout le temps, mais je n'arrive pas à trouver de conseils. Merci d'avance. J'apprécie ton aide. – looloobs

Questions connexes