I would like to produce a URL as
/swimming/students/get_times/2013-01-01/2013-02-02
from this route
get_class_swimming_students GET /swimming/students/get_times/:start_date/:end_date(.:format) swimming/students#get_times
How do I pass parameters to get_class_swimming_students_path
?
The syntax is very simple. Inside of your button_to, you can add attributes (much like in HTML). In the code snippet above, I added a class attribute as well. In a button_to, you simply have to add an attribute called “params:” with the params passed as a hash.
You should use request. original_url to get the current URL.
get_class_swimming_students_path('2013-01-01', '2013-02-02')
In Rails, URL parameters are mapped to the router in the precise order in which they are passed. Consider the following:
# rake routes
my_route GET /my_route/:first_param/:second_param/:third_param(.:format)
# my_view.html.erb
<%= link_to('My Route', my_route_path('first_param', 'second_param', 'third_param') %>
#=> <a href="/my_route/first_param/second_param/third_param">My Route</a>
Consider also the following case where foo
and bar
are static parameters positioned between dynamic parameters:
# rake routes
my_route GET /my_route/:first_param/foo/:second_param/bar/:third_param(.:format)
# my_view.html.erb
<%= link_to('My Route', my_route_path('first_param', 'second_param', 'third_param') %>
#=> <a href="/my_route/first_param/foo/second_param/bar/third_param">My Route</a>
In the final example, arguments will appear as URL parameters in the order in which they were passed, but not necessarily in the same sequence.
EDIT:
The following syntax is equivalent to the first snippet. The primary difference is that it accepts arguments as named parameters, rather than in the order they're passed:
get_class_swimming_students_path(:start_date => '2013-01-01', :end_date => '2013-02-02')
For any path you can pass params like
get_class_swimming_students_path(:params1 => value1, :params2 => value2)
And In controller you can simply access those passed params as usual
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With