Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
禁用javascript时,链接和表单的解决方案是什么_Javascript_Ruby On Rails - Fatal编程技术网

禁用javascript时,链接和表单的解决方案是什么

禁用javascript时,链接和表单的解决方案是什么,javascript,ruby-on-rails,Javascript,Ruby On Rails,我对禁用Rails和javascript有3个问题 1)第一种情况是link\u to方法,它不起作用,如果正常情况下应该去销毁操作,它会得到显示页面,解决方案就是我们所说的“优雅降级”,但我想要的是,如果js被禁用,则阻止链接起作用。怎么做 2)第二个问题是关于注销功能(使用销毁操作),因此我有一个链接用于注销: link_to "logout", logout_path, method: "delete" 在我的routes文件中,我有以下行: match "/logout", to: "

我对禁用Rails和javascript有3个问题

1)第一种情况是
link\u to
方法,它不起作用,如果正常情况下应该去销毁操作,它会得到显示页面,解决方案就是我们所说的“优雅降级”,但我想要的是,如果js被禁用,则阻止链接起作用。怎么做

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

link_to "logout", logout_path, method: "delete"
在我的routes文件中,我有以下行:

match "/logout", to: "sessions#destroy", via: 'delete'
如果禁用javascript,则会出现以下错误:

No route matches [GET] "/signout"
 ActionController::InvalidAuthenticityToken in RelationshipsController#destroy
通过“获取”添加是否安全??这条路线是这样的:

match "/logout", to: "sessions#destroy", via: ['delete', 'get']
3)最后一个问题是当我有一个带有提交按钮的表单时,如果禁用javascript,我会得到错误:

No route matches [GET] "/signout"
 ActionController::InvalidAuthenticityToken in RelationshipsController#destroy

这意味着在生产中,我会看到一个页面“出了问题…”这里的解决方案是什么?

当您使用link\u to/button\u to“method:delete”时,它会生成类似这样的内容

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

当jQueryUJS看到_方法是delete时,它会劫持单击。它不使用GET/POST,而是使用DELETE

(关于#3:注意从链接_to/button _to生成的真实性_令牌。我不知道如何详细说明)

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