我有一个用 Rails 3 编写的搜索表单,当我查询它时,只要我不在查询中添加一个点,一切都会正常。例如:
http://localhost:3000/en/job/search/q/test - WORKS
http://localhost:3000/en/job/search/q/test. - DOES NOT WORK
末尾带有点的 URL 给出了
Routing Error: No route matches [GET] "/en/job/search/q/test.
有人知道我该如何解决这个问题吗?谢谢。
最佳答案
默认情况下,Rails 将小数点右侧的所有内容解释为格式。您需要设置:约束
这是一篇关于该主题的好文章:http://coding-journal.com/rails-3-routing-parameters-with-dots/
以下是 Rails API 中的引用,可以帮助您解决问题:
http://guides.rubyonrails.org/routing.html#specifying-constraints
http://guides.rubyonrails.org/routing.html#dynamic-segments
由于您在搜索中传递了一个字符串作为 get 请求,您还可以考虑路由通配:http://guides.rubyonrails.org/routing.html#route-globbing
你的路线将是这样的:
match ":language/job/search/*query"
在你的 Controller 中,你可以使用 params[] 数组从路由中获取值:
q = params[:query]
在将其传递给 ActiveRecord 时,请务必使用最佳实践,以避免 SQL 注入(inject)攻击。
关于ruby-on-rails - Rails 3 给出 URL 中的点的路由错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11816627/