2010-11-29 3 views
4

Après beaucoup de recherche et de lecture que j'ai un collection_select qui ressemble sirails 2.1.2 collection_select avec: onchange et un: avec

<%= collection_select :selection, :level, User::LEVELS, :to_s, :to_s,{:with => "this.value"}, 
     {:onchange => remote_function(
      :url => {:action => "updatelevel", :controller => "user", :id=> user.id}) 
     } %> 

Cependant son ne passe pas la valeur sélectionnée à mon contrôleur , la seule chose que j'ai jamais est un zéro.

Je me suis trompé avec des combinaisons de différences d'où: avec devrait être et essayé des chaînes de test, mais il ne semble jamais rien faire.

Ai-je raté quelque chose de stupide? Y a-t-il un exemple «définitif» que je devrais regarder? Rails semble changer si vite qu'il est difficile de savoir de quelle version parle un forum et l'API que j'ai lue pour collection_select ne montre pas ce que je peux mettre dans les hash des options.

Répondre

5

J'ai vérifié cela sur mon application en cours d'exécution Rails 2.3.10. Vous avez votre paramètre 'avec' au mauvais endroit, c'est une option pour la fonction à distance, pas pour la sélection de la collection. En outre, en passant la valeur de cette manière, vous obtiendrez un hash params qui ressemble à {"134523456" => ""}, ce qui n'est probablement pas ce que vous voulez. Vous devez avoir le résultat de votre valeur 'with' dans une chaîne centrée sur JavaScript.

<%= collection_select :selection, :level, User::LEVELS, :to_s, :to_s, {}, 
     {:onchange => remote_function(
     :url => {:action => "updatelevel", :controller => "user", :id=> user.id}, 
     :with => "'level_id='+this.value" 
    ) 
    } 
%> 
Questions connexes