ruby-on-rails - Rails 在 url 中使用 '.' 截断参数

标签 ruby-on-rails ruby url escaping

我正在尝试将 IP 地址作为参数发送到 url 中的 Rails 方法 destroy。如果参数包含. 就会有问题;我收到 not found 错误,这是生成的日志:

Started DELETE "/admin/user/stefan-admin/whitelist/4.3.2.1" for 127.0.0.1 at 2013-07-17 09:31:18 +0100
Processing by ErrorsController#error_404 as 
  Parameters: {"not_found"=>"admin/user/stefan-admin/whitelist/4.3.2"}
WARNING: Can't verify CSRF token authenticity
Session: {:user=>"admin", :role=>:admin, :user_id=>"stefan-admin"}
Completed 404 Not Found in 30ms (Views: 1.1ms | ActiveRecord: 0.0ms)

未找到 消息具有截断的 IP 地址。如果我使用不带 . 的参数,例如abc,我没有得到 not found 错误,调用了 destroy 方法。

Rails 收到了 url,但随后在内部对其进行了处理,可能是因为它正在处理 . 作为扩展。有什么方法可以关闭此行为或转义 url 来避免它吗?

最佳答案

您需要向路由添加约束以允许参数中包含点

资源 :whitelists, :constraints => { :id =>/[0-9.]+/}

或者你的 routes.rb 中的那种东西,这取决于你如何编写你的路线,但约束部分保持不变

关于ruby-on-rails - Rails 在 url 中使用 '.' 截断参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17694972/

相关文章:

php - CodeIgniter - 从 URL 中删除 "Index"

ruby-on-rails - Rails 应用程序中的动态角色和权限系统

ruby - 如何在 Ruby 中将散列值从字符串转换为数组?

Ruby 数组相等

mysql - 如果我有很多用户、帖子、喜欢,如何组织对数据库的查询

http - 在哪里可以找到 http url 方案 rfc

ruby-on-rails - Rails、Tire 和 CircleCI:在创建 Tire-Searchable 对象时运行 rspec 测试时出现 Errno::ECONNREFUSED 错误

ruby-on-rails - 基于用户权限的 Rails 3 ActiveRecord 验证

ruby-on-rails - Rails 表单错误 : syntax error, 意外的 keywords_ensure,期望输入结束

asp.net - 带有虚拟目录的 ASP.net 母版页中的基本 URL