как требовать и проверять параметры URL в рельсах 3 - PullRequest
4 голосов
/ 12 марта 2011

Есть ли в вашем файле маршрутов способ проверить и проверить параметры URL.Я не говорю о параметрах restful '/ controller / action /: id', но говорю о 'controller / action? Param1 = x¶m2 = y¶m3 = z'.Мне нужно иметь возможность проверять каждый параметр и требовать их.

Ответы [ 2 ]

8 голосов
/ 12 марта 2011

Да, вы можете.Например, чтобы проверить, что param1 существует и не является пустым, вы должны сделать следующее:

match 'c/action' => 'c#action', :constraints => lambda{ |req| !req.params[:param1].blank? }

Вы можете также ограничить эти ограничения, чтобы применить их к нескольким маршрутам:

scope :constraints => lambda{ |req| !req.params[:param1].blank? } do
  match 'controller/action1' => 'controller#action1'
  match 'controller/action2' => 'controller#action2'
end
2 голосов
/ 12 марта 2011

Проблема подхода с ограничениями, описанного Pan Thomakos, заключается в том, что он предотвратит попадание URL-адреса с недопустимым набором параметров в вашу кодовую базу, и вы сможете ответить пользователю осмысленно (пользователь увидит страницу, не найденную). ошибка я считаю).

Если это удовлетворяет вашим требованиям, это нормально, но более удобным для пользователя способом было бы перенести валидацию параметров в соответствующий контроллер, где в вашем методе действия вы бы проходили через набор параметров, полученных этим методом действия, и если таковые имеются из требуемого отсутствует, вы должны создать осмысленное сообщение и отправить его обратно пользователю с помощью: уведомления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...