由于无效的真实性令牌,Rails link_to destroy方法失败

时间:2016-11-18 17:09:49

标签: ruby-on-rails button hyperlink haml destroy

我有以下haml代码生成一个按钮:

= link_to 'Delete',
        MODEL_path(MODEL),
        class: 'data-type-button btn btn-negative',
        data: { confirm: 'delete it now!!! ... ?' },
        method: :delete

按下生成的删除按钮,然后通过弹出确认我想继续删除,我进入错误屏幕。此屏幕告诉我,我的真实性令牌无效。但link_to替换为button_to的相同代码仍可正常工作,并且该项目已删除。

我希望这是一个link_to而不是button_to,因为生成的HTML代码的排列方式。如何让link_to工作?

2 个答案:

答案 0 :(得分:8)

确认您的布局和HTML HEAD部分中有csrf元标记。

= csrf_meta_tag

答案 1 :(得分:2)

事实证明,link_to通过路径后括号内的内容传递参数。因此,为了将真实性令牌作为参数传递,同时使用link_to,您可以使用该代码的以下修改

= link_to 'Delete',
        MODEL_path(id: MODEL.id, authenticity_token: form_authenticity_token),
        class: 'data-type-button btn btn-negative',
        data: { confirm: 'Delete it now!!! ... ?' },
        method: :delete

当我发布问题时,我确实知道了答案,但是在花了很多时间试图解决这个问题并且没有在谷歌任何地方直接找到解决方案之后,我想发布我的解决方案来帮助其他任何失去的灵魂。我不知道这个网站是否是不好的做法,但是如果它对某人有帮助的话我就可以了。