当我们用map.some_link这样的名字在routes.rb中定义路由时.我们可以通过两种方式使用链接——some_link_urlsome_link_path.

  • 两者之间有什么区别?
  • 使用哪个更安全?

推荐答案

我有同样的问题,我写了a small post about this in my blog

原因总结如下(我在论坛上发现):

*_路径用于视图,因为AHREF隐式链接到当前URL.所以一遍又一遍地重复是浪费字节.不过,在控制器中,重定向到需要*url,因为HTTP规范要求3xx重定向中的Location:头是一个完整的url.

Here is another explanation表示这取决于我们从非SSL站点链接到SSL站点时是否需要使用绝对URI,反之亦然.

到目前为止,我所读到的并不意味着它们中的任何一个比另一个更安全.这实际上取决于什么是"正确的"用法.

Ruby-on-rails相关问答推荐

Rails HotWire和View Components:涡轮框架不会取代内容

在数组中定位不匹配的索引

Rails文档的悲观锁定示例中的争用条件

Rails 7,返回具有两个单独条件的活动记录关联,一个在父级,一个在子级

如何在生成的 HTML 本身中显示部分名称

Rails - 如何从模型中查询 has_many

显示每个 rspec 示例的运行时

rails s和bundle exec rails s有什么区别?

rails 3,简单数组的Kaminari分页

rails 3.2 迁移无法在更改方法中向 create_table 添加索引

无法连接 localhost:3000 ruby​​ on rails in vagrant

rails 4.0, rake db:sessions:create

Rspec 与 TestUnit

在 ruby​​ 中构建公钥时,是什么导致既不是 PUB key 也不是 PRIV key::nested asn1 错误?

Rails Activeadmin - 自定义关联 Select 框

Rails:立即渲染并退出

有没有办法列出所有 belongs_to 关联?

何时使用 Helpers 而不是 Partials

Rails 3:乘客找不到Bundle 程序安装的 git gem

Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有什么不同