2011-08-02 3 views
0

J'ai ce code dans mes itinéraires:RoR aucun itinéraire correspond

controller :active_car do 
    put 'switch_car' => :update 
    get 'switch_car' => :edit 
    end 

Ceci est mon code sur ma page d'édition.

<% form_tag('switch_car', :method => :put) do%> 
<div class="field"> 
    <label for="car_info_id">Car Name:</label> 
    <%= select("", "car_info_id", @available_cars.collect {|v| [v.name, v.id]})%> 
</div> 
<div> 
    <%= submit_tag "Switch Car" %> 
</div> 
<% end %> 

Lorsque je clique sur Valider, je reçois l'erreur de routage suivant.

Aucun élément correspondant de l'itinéraire «/switch_car » avec le pointage URL pour http://localhost:3000/switch_car?method=put

Le get fonctionne très bien que je finis l'url avec switch_car je reçois ma page à modifier. Pour une raison quelconque, la définition de put ne fonctionne pas. Après avoir changé de méthode en second argument, cela ne fonctionne tout simplement pas. Il semble avoir encore post comme méthode au lieu de mettre. Ici est généré HTML

<form accept-charset="UTF-8" action="switch_car" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /> 

Répondre

0

: méthode appartient au hachage "options", qui est le deuxième argument de form_tag, pas le premier.

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tag

S'il vous plaît vérifier le code HTML généré par cette balise et le poster ici.

+0

Je ne reçois plus l'erreur de route mais il semble toujours que l'action soit postée. – Xaxum

+0

Je vois maintenant la mise cachée comme indiqué dans la documentation. Merci. – Xaxum

Questions connexes