1

当 Rails 和 javascript 被禁用时,我有 3 个问题

1)第一种情况是link_to不起作用的方法,如果它通常应该去破坏动作,它会得到显示页面,解决方案就是我们所知道的“优雅降级”,但我想要的是阻止链接如果 js 被禁用,则无法工作。这样做的方法是什么?

2)第二个问题是关于注销功能(使用销毁操作),所以我有一个注销链接

link_to "logout", logout_path, method: "delete"

在我的路线文件中,我有以下行:

match "/logout", to: "sessions#destroy", via: 'delete'

如果我禁用 javascript,我会收到错误消息:

No route matches [GET] "/signout"

通过以下方式添加是否安全:'get'?像这样到这条路线:

match "/logout", to: "sessions#destroy", via: ['delete', 'get']

3)最后一个问题是当我有一个带有提交按钮的表单时,如果禁用 javascript,我会收到错误消息:

 ActionController::InvalidAuthenticityToken in RelationshipsController#destroy

这意味着在生产中我得到页面“出了点问题......”这里的解决方案是什么?

4

1 回答 1

0

当您使用 link_to / button_to “方法:删除”时,它会生成类似这样的内容。

<form action="/something" class="button_to" method="post">
    <div>
        <input name="_method" type="hidden" value="delete">
        <input class="btn btn-danger" data-confirm="Are you sure?" type="submit" value="Delete"> 
        <input name="authenticity_token" type="hidden" value="gP+sFWt9Y3r0m8U4gqqoax+tnKwIIalHVxhkC2IyoHY=">
    </div>
</form>

jquery-ujs 劫持点击,当它看到 _method 被删除。它不使用 GET/POST,它使用 DELETE。

(关于#3:注意从link_to / button_to生成的authenticity_token。我不太了解详细说明)

TL:博士;开发人员使用 DELETE 调用“注销”用户并不常见。只需使用 GET,让您的生活更轻松。

于 2013-10-13T22:34:30.110 回答