2010-12-08 7 views
0

J'ai un modèle notes, qui a une relation many-to-many avec le modèle users. De l'avis d'index dans le contrôleur notes je cette forme:Strange Rails comportement lorsque vous essayez de soumettre un formulaire

<form id='note_form' method="post" action="/notes/temp_path" > 
    <input type="hidden" name="authenticity_token" value="<%= form_authenticity_token %>" />   
    <input type="text" size="30" name="start_date" id="start_date"> 
</form> 

qui pointe à l'action temp_path dans le contrôleur notes. Pour une raison quelconque lorsque ce formulaire est soumis, au lieu d'exécuter le code dans l'action temp_path, Rails tente de charger une certaine note et, comme il ne le peut pas, il la redirige vers l'index.

Started POST "/notes/temp_path" for 127.0.0.1 at 2010-12-08 22:08:25 +1000 
DEPRECATION WARNING: Setting filter_parameter_logging in ActionController is deprecated and has no longer effect, please set 'config.filter_parameters' in config/application.rb instead. (called from <class:ApplicationController> at /Users/ben/rails_projects/note_prog/app/controllers/application_controller.rb:6) 
    Processing by NotesController#temp_path as HTML 
    Parameters: {"authenticity_token"=>"Ck6NmmYO86rvJSEsiqpIMkcaiErEhV7s/XMzjka15AI="} 
    User Load (0.3ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 56) LIMIT 1 
    UserNote Load (0.2ms) SELECT "user_notes".* FROM "user_notes" WHERE ("user_notes"."note_id" = 0) 
Redirected to http://localhost:3000/notes 

Je suis assez sûr que le bit WHERE ("user_notes"."note_id" = 0) est à l'origine du problème. Mais je ne suis pas sûr pourquoi cela est même fait? Basé sur la ligne ci-dessus, il semble que ce soit dans les coulisses de Rails. Nulle part dans l'action temp_path je n'ai besoin de charger une note existante. Comment puis-je arrêter cela? J'utilise Rails 3.0.1. Merci d'avoir lu.

Répondre

1

Vous devriez nous montrer le code de votre contrôleur. Avez-vous des instructions 'redirect_to' là-bas? Avec toutes les conditions?

Peut-être avez-vous des filtres dans votre contrôleur, peut-être dans ApplicationController? De l'avertissement de dépréciation, je vois que vous pouvez avoir du code là-bas.

Questions connexes