Ok, donc en gros je fais une application web où je veux que l'utilisateur entre une valeur donnée pour une constante nommée @radius que je vais utiliser plus tard.
Imaginons que j'ai le code suivant dans une vue nommée "business/index.html.erb".
<%= form_tag root_path do %>
<%= number_field_tag :radius %>
<%= submit_tag "add" %>
<% end %>
Et puis j'ai le code suivant dans mon business_controller sous l'action index :
@radius= params[:radius] || @radius || 1
Mon fichier de routes :
root :to => 'business#index'
post "business/index"
En fait, la vue est belle, mais lorsque je modifie le rayon et que je l'envoie, la valeur par défaut est toujours de un, comme si params[:radius] était nul. Avez-vous une idée de ce qui m'échappe ? Je suis sûr que c'est assez élémentaire.
EDIT :
Voici une partie du fichier journal qui, je crois, correspond à ce qui m'a été demandé.
Started POST "/" for 127.0.0.1 at 2013-06-20 02:00:31 -0430
Processing by BusinessController#index as HTML
Parameters: {"utf8"=>"", "authenticity_token"=>"CaD40O9gAedbeDepeDHtrMNNWzD/uBznHZ30ZGy+c6Q=", "radius"=>"2", "commit"=>"add"}
[1m[35mBusiness Load (18.0ms)[0m SELECT businesses.*, 6371.0 * 2 * ASIN(SQRT(POWER(SIN((10.5083644 - businesses.latitude) * PI() / 180 / 2), 2) + COS(10.5083644 * PI() / 180) * COS(businesses.latitude * PI() / 180) * POWER(SIN((-66.83536699999999 - businesses.longitude) * PI() / 180 / 2), 2))) AS distance, CAST(DEGREES(ATAN2( RADIANS(businesses.longitude - -66.83536699999999), RADIANS(businesses.latitude - 10.5083644))) + 360 AS decimal) % 360 AS bearing, ( businesses.reviews_count / (nullif(businesses.reviews_count + MAX(businesses.reviews_count) OVER(),0)) ) * businesses.rating + (MAX(businesses.reviews_count) OVER() / (nullif(businesses.reviews_count+MAX(businesses.reviews_count) OVER(),0))) * AVG(businesses.rating) OVER() as ranking FROM "businesses" WHERE (businesses.latitude BETWEEN 10.490377967881624 AND 10.526350832118375 AND businesses.longitude BETWEEN -66.85366024099285 AND -66.81707375900713 AND 6371.0 * 2 * ASIN(SQRT(POWER(SIN((10.5083644 - businesses.latitude) * PI() / 180 / 2), 2) + COS(10.5083644 * PI() / 180) * COS(businesses.latitude * PI() / 180) * POWER(SIN((-66.83536699999999 - businesses.longitude) * PI() / 180 / 2), 2))) <= '2') GROUP BY businesses.id ORDER BY distance ASC, ranking DESC
Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/gmaps4rails-1.5.6/app/views/gmaps4rails/_gmaps4rails.html.erb (1.0ms)