我有3个关于Rails和javascript被禁用的问题
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
这意味着在制作中我得到的页面“出了问题......”这里有什么解决方案?
答案 0 :(得分:0)
当你使用link_to / button_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>
当jquery-ujs看到_method被删除时,它会劫持点击。它不使用GET / POST,它使用DELETE。
(关于#3:注意从link_to / button_to生成的authenticity_token。我不太了解它的详细信息)
TL:DR;开发人员使用DELETE调用来“注销”用户并不常见。只需使用GET,让您的生活更轻松。