2008-10-22 5 views
2

J'ai une application Rails que dans le code Erb, j'utilise une boîte de sélection. Ce que je voudrais faire est recharger la page passer le paramètre de tri. Mon contrôleur gère déjà, mais je ne sais pas comment recharger la page avec la valeur sélectionnée dans ma boîte de sélection. Voici mon code:Sélectionnez Boîte onClick - Rails

<% @options = {:latest => 'lastest' , :alphabetical => 'alphabetical', :pricelow => 'price-low', :pricehigh =>'pricehigh'} %> 
<%= select_tag 'sort[]', options_for_select(@options), :include_blank => true,:onchange => "location.reload('location?sort='+this.value)"%> 

Répondre

3

Avez-vous envisagé d'utiliser un appel ajax dans votre zone de liste? Si vous avez une méthode sur votre contrôleur qui retourne juste la liste triée, en fonction des paramètres de tri, vous pouvez faire:

<% @options = {:latest => 'lastest' , :alphabetical => 'alphabetical', :pricelow => 'price-low', :pricehigh =>'pricehigh'} %> 
<%= select_tag 'sort[]', options_for_select(@options), :include_blank => true,:onchange => remote_function(:url => {:controller => 'your_controller', :action => 'list_sort_method'}, :with => "'sort='+this.value", :update => "div_containing_list") %> 
2

Si vous ne souhaitez pas utiliser AJAX, puis mettre un form_tag autour de votre code.

Jetez un oeil au code source Redmine sur http://redmine.rubyforge.org/svn/trunk. Le UsersController fait quelque chose de similaire - il y a une zone de liste déroulante qui permet à un filtre. La sélection du combo recharge la page.