Пользовательский маршрут Rails 3, который принимает несколько идентификаторов в качестве параметра

Как добавить маршрут в мое приложение Rails 3, которое позволяет мне иметь URL-адрес, который сопоставляется с действием в ресурсе RESTful, который принимает несколько параметров:

/modelname/compare/1234,2938,40395

И затем в моем контроллере я хочу получить доступ к этим идентификаторам:

@modelname = Modelname.find(params[:modelname_ids])

До сих пор я пытался сопоставить '/modelname/compare/:modelname_ids', :to => 'modelname#compare', но все равно получаю No route matches "/modelname/compare/4df632fd35be357701000005,4df632fd35be357701000005". Какие-либо предложения?


person Avishai    schedule 20.06.2011    source источник


Ответы (1)


Вы можете настроить маршрут, который соответствует чему угодно, а затем разделить параметр внутри вашего контроллера:

resources :modelname do
  match 'compare/*path' => 'controller#compare_action'
end

# controller:
def compare_action
  @modelname = Modelname.find(params[:path].split(','))
end
person jdeseno    schedule 20.06.2011
comment
разве это не должно быть split(',')? - person lulalala; 30.03.2012