我有以下链接:
<a href="/kits?resource_id=536" class="authorize spin" data-method="post" data-remote="true" id="use_it_link_171" rel="nofollow">
创建工具包后,我按如下方式更改链接:
<a href="/kits/536" class="authorize spin" data-method="delete" data-remote="true" id="use_it_link_171" rel="nofollow">
我更改了href和data-method,以便它应该提交到destroy动作。但它仍然作为POST提交
为什么会这样,我如何解决这个问题,以便将其作为'删除'提交?
答案 0 :(得分:4)
这是因为Rails使用不引人注目的javascript来设置<a data-remote="xxx">
或<a data-method="xxx">
等标签的行为(事实上,Rails会在页面中创建一个隐藏的表单,在单击链接时会提交该表单)。它是在rails.js加载页面时完成的。
因此,当您更改链接的data-method
属性时,它“太晚了”,它不会更改链接的行为(您应该为此更新隐藏的表单)。您可以深入了解rails.js
代码以了解如何操作,但我建议您在页面中创建2个链接(一个包含data-method="post"
,另一个包含data-method="delete"
),并使用CSS隐藏/显示有用的链接。