ruby-on-rails - Rails 3 给出 URL 中的点的路由错误

标签 ruby-on-rails ruby-on-rails-3 routes

我有一个用 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/

相关文章:

routes - 无法在 SignalR 2.0.0 中注册路由

ruby-on-rails - Rails 生成器传递参数数组

html - 音频中的内容与报道的内容不符 - 回形针

javascript - 您在 Rails 应用程序中使用什么 Web UI 工具包?

php - 路由到 CodeIgniter 中的多个子文件夹

javascript - 检测客户端与服务器端路由

ruby-on-rails - Heroku PostGres 数据库测试配置

ruby-on-rails - 如何从 Ruby 1.8.7 中的 utf-8 字符串中获取第 i 个字符?

ruby-on-rails - Rails 自定义生成器组

ruby-on-rails - rails中类属性的未定义方法错误