Rails 3做了一些很酷的事情,让Javascript变得不引人注目,所以他们做了如下工作:

= link_to "Logout", user_session_path, :method => :delete

…皈依

<a href="/logout" data-method="delete" rel="nofollow">Logout</a>

但我突然想到..当我关闭javascript时,该方法不再是DELETE,而是像预期的那样得到.那么,有没有计划,或者有没有办法,允许这data-个属性优雅地降级,这样链接仍然是一个删除请求?

推荐答案

他们在Rails 3中使用这data-个属性所做的更改并不是关于优雅的降级,而是关于不引人注目的JavaScript.

在Rails 2中,在链接上指定:method => :delete将生成一大堆内联JavaScript,这些JavaScript将创建一个带有隐藏输入的表单,然后提交表单.这和现在一样:关闭JavaScript,它默认为GET请求.因此,支持无JavaScript的情况与以前一样.

一个选项是使用表单/按钮而不是链接,这样就可以像Rails 2 JavaScript那样将该方法作为隐藏字段包含.另一种 Select 是让GET版本将您带到一个中间页面,该页面又有表单/按钮.

新方法的好处是它不引人注目.用于更改HTTP谓词的JavaScript存在于一个外部文件中,并使用data-个属性来确定它应该附加到哪些元素.

Ruby-on-rails相关问答推荐

Rails 7.1解决冲突的Zeitwerk Inflection规则

如何在_serialize之前执行代码?""或者如何在序列化属性之前对属性进行清理?

Rails Routing:在具有自己的路由的名称空间下组织路由

Rails版本7.1.2:当验证失败且控制器发送422状态时,JS停止工作

具有 IN 子句的参数化查询在 ruby​​-on-rails 的 blazer 工具中无法按预期工作

Ruby on Rails form_with 不显示错误,卡在服务器端

Rails 7.0.4 和 link_to 的数据确认不起作用

无效的单表继承类型:Rails

循环大量记录时 Ruby on Rails 内存泄漏; find_each 没有帮助

从子类中的重载方法调用基类方法

在 Epoch 中将 Ruby 时间戳转换为秒数并返回

Rails - 从日期和时间戳获取日期

将根 url 重定向到 Rails 应用程序中的其他位置

如何在 Ruby 中创建一个新的 Date 实例

Rails:将所有未知路由重定向到 root_url

在 Rails 中复制模型实例

Rails 3.0 中的 f.error_messages

是否可以设置 travis 来运行多种语言的测试?

如何在rails中正确使用单选按钮?

何时(如果)合并 ActiveRecord 迁移?