RoRにてポートフォリオを作成中。
version
1Rails 5.2.4.4 2ruby 2.6.3
ログアウト機能を実装し、テストコードを書いている際に、なぜかログアウトした際のテストが通らないことが判明。
サーバーを立ち上げ、同じ動作をした結果、本来deleteリクエストとなるはずがgetリクエストとなっており、route errorとして判断されていた。
html
1<header class="navbar navbar-fixed-top navbar-inverse"> 2 <div class="container"> 3 <%= link_to(image_tag("header_logo.jpg", :alt => ""), root_url, id: 'logo') %> 4 <nav> 5 <ul class="nav navbar-nav navbar-right"> 6 <li><%= link_to "Home", '/' %></li> 7 <li><%= link_to "About", '/about' %></li> 8 <% if logged_in? %> 9 <li><%= link_to "Users", '#' %></li> 10 <li class="dropdown"> 11 <a href="#" class="dropdown-toggle" data-toggle="dropdown"> 12 Account <b class="caret"></b> 13 </a> 14 <ul class="dropdown-menu"> 15 <li><%= link_to "Profile", current_user %></li> 16 <li><%= link_to "Settings", '#' %></li> 17 <li class="divider"></li> 18 <li> 19 <%= link_to "Log out", logout_path, method: :delete %> 20 ↑該当箇所 21 </li> 22 </ul> 23 </li> 24 <% else %> 25 <li><%= link_to "Log in", login_path %></li> 26 <% end %> 27 </ul> 28 </nav> 29 </div> 30</header>
本来,deleteリクエストは存在せず、jsでdeleteを実装している?
(ここの知識が曖昧です。すいません)
ことから、下記の通りにapplication.jsを修正した。
applicationjs
1//= require jquery 2//= require jquery3 3//= require jquery_ujs 4//= require popper 5//= require bootstrap-sprockets 6 7//= require rails-ujs 8//= require activestorage 9//= require turbolinks 10//= require_tree .
が結果は、getとして判断された。
qiitaやネットの記事からlink_toをbutton_toにすると動作するとのこと
html
1<%= link_to "Log out", logout_path, method: :delete %> 2↓ 3<%= button_to "Log out", logout_path, method: :delete %>
結果はdeleteリクエストとして動作し、rspecもlinkからbuttonに修正したところ通るようになりました。
しかし、buttonにしないと動作しない原因が分からず、納得できません。
望みとしてlinkで統一したいですし、他の開発者はどのように対応しているのか知りたいと思い投稿しました。
結論的には解決している問題ですが、どなたかご教示いただければ嬉しく思います。
回答を参考に、下記の通り修正
developmentrb
1 #config.log_level = :warn(削除) 2 #config.logger = Logger.new(STDOUT)(削除) 3--------------------------------↓↓修正後↓↓ 4 logger = ActiveSupport::Logger.new(STDOUT) 5 logger.formatter = config.log_formatter 6 config.logger = ActiveSupport::TaggedLogging.new(logger)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/22 09:43
2020/11/22 09:45
2020/11/22 11:10
2020/11/22 11:22
2020/11/22 12:23
2020/11/22 12:48
2020/11/29 06:23
2020/11/29 10:20
2020/11/29 12:23
2020/11/29 12:33
2020/11/29 13:41
2020/11/29 13:44
2020/11/29 13:47
2020/11/29 14:12