我有资源路线
resources :favorites
但我想有一个请求
/favorites?sort_by=name
/favorites?sort_by=date
/favorites?sort_by=number
如何限制请求中仅使用姓名、日期、数字字词?
我努力了
resources :favorites, :constraints => {:sort_by => /name|date|number/}
但它不起作用。
提前致谢。
我有资源路线
resources :favorites
但我想有一个请求
/favorites?sort_by=name
/favorites?sort_by=date
/favorites?sort_by=number
如何限制请求中仅使用姓名、日期、数字字词?
我努力了
resources :favorites, :constraints => {:sort_by => /name|date|number/}
但它不起作用。
提前致谢。
在 routes.rb 中放置以下代码
resources :favorites do
member do
get :sort_by, constraints: {id: /name|date|number/}
end
end
它会产生
sort_by_favorite GET /favorites/:id/sort_by(.:format) favorites#sort_by {:id=>/name|date|number/}
在 "/favorites/:id/sort_by" URL 中,代替 :id 你可以传递 'name' 或 'date' 或 'number'。但我想,这不是你想要的。
所以,如果你想要以下网址
/favorites?sort_by=name
/favorites?sort_by=date
/favorites?sort_by=number
然后你必须在收藏夹控制器的索引动作中写一些条件。
def index
if ['name', 'date', 'number'].include?(params['sort_by'])
# your code goes here
else
# redirect to some where with error message
end
end
希望它对你有用:)
路由约束不针对查询字符串进行测试。
在 sort_by 上创建自定义路线,并使其成为路线的一部分。或将其约束在控制器中。