我想生成一个URL
/swimming/students/get_times/2013-01-01/2013-02-02
来自这条路线
get_class_swimming_students GET /swimming/students/get_times/:start_date/:end_date(.:format) swimming/students#get_times
如何将参数传递给get_class_swimming_students_path
?
答案 0 :(得分:45)
get_class_swimming_students_path('2013-01-01', '2013-02-02')
在Rails中,URL参数按照传递的精确顺序映射到路由器。请考虑以下事项:
# 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>
还要考虑以下情况:foo
和bar
是位于动态参数之间的静态参数:
# 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>
在最后一个示例中,参数将在 order 中显示为传递它们的URL参数,但不一定在同一序列中。
编辑:
以下语法等同于第一个代码段。主要区别在于它接受参数作为命名参数,而不是按照它们传递的顺序接受:
get_class_swimming_students_path(:start_date => '2013-01-01', :end_date => '2013-02-02')
答案 1 :(得分:22)
对于任何路径,您都可以传递像
这样的参数get_class_swimming_students_path(:params1 => value1, :params2 => value2)
在控制器中,您可以像往常一样简单地访问那些传递的参数
答案 2 :(得分:2)
尝试使用
get_class_swimming_students_path(:start_date => "2013-01-01", :end_date => "2013-02-02")
答案 3 :(得分:0)
在rails 4中,键入less with:
get_class_swimming_students_path(params1: value1, params2: "value2")
其中value1是方法,value2是字符串
答案 4 :(得分:0)
您还可以像这样组合命名参数和非命名参数:
get_class_swimming_students_path('2013-01-01', '2013-02-02', gender: 'M')