Подтвердить что ты не робот

Rails: URL/путь с параметрами

Я хотел бы создать 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?

4b9b3361

Ответ 1

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>

В последнем примере аргументы будут отображаться как параметры URL в том порядке, в котором они были переданы, но не обязательно в одной и той же последовательности.

EDIT:

Следующий синтаксис эквивалентен первому фрагменту. Основное отличие состоит в том, что он принимает аргументы как именованные параметры, а не в том порядке, в котором они переданы:

get_class_swimming_students_path(:start_date => '2013-01-01', :end_date => '2013-02-02')

Ответ 2

Для любого пути вы можете передавать параметры, такие как

get_class_swimming_students_path(:params1 => value1, :params2 => value2)

И в контроллере вы можете просто получить доступ к тем переданным параметрам, как обычно

Ответ 3

Попробуйте использовать

get_class_swimming_students_path(:start_date => "2013-01-01", :end_date => "2013-02-02")

Ответ 4

в рельсах 4, тип меньше:

get_class_swimming_students_path(params1: value1, params2: "value2")

где value1 - это метод, а value2 - строка