当我更改了data-bind =“delete”Rails时,为什么我的链接仍然使用Post提交

时间:2012-09-10 13:18:31

标签: jquery routes ruby-on-rails-3.2

我有以下链接:

<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提交

为什么会这样,我如何解决这个问题,以便将其作为'删除'提交?

1 个答案:

答案 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隐藏/显示有用的链接。