Ruby On Rails 7の場合ですと、link_toで
ERB
1<%= link_to("テキスト", "転送先URL", method: :post) %>
とし、POSTとしてHTTPリクエストを送ることができます。
しかし、GETとしてアクセスしてしまう、ということでしょうか。
以下、もしかしたらできるかもしれない、という解決策を考えてみます。
デザインが変わってしまいますが、これで動いた事例があります。
ERB
1<%= button_to("ログアウト", "/logout", class: "header-link-text", method: :post)%>
link_toで書かずに、直に<a></a>で書いてみてはどうでしょうか。data-method="post"を
読み込んでからでお願いします
HTML
1<a class="header-link-text" rel="nofollow" data-method="post" href="/logout">ログアウト</a>
もしかすると、以下のようになっているかもしれません。
config/routes.rb
Ruby
1Rails.application.routes.draw do
2 ...
3 get '/logout'
4 # または
5 get '/logout' => 'コントローラ名#def名'
6 ...
7end
この場合、getをpostに直さなければなりません。しかし、これはエラー上可能性は
低いと思われます。
Ruby
1Rails.application.routes.draw do
2 ...
3 # get を post に変更
4 post '/logout'
5 # または
6 post '/logout' => 'コントローラ名#def名'
7 ...
8end
data-method とは
※これはとある記事を読んで、記述しております。正確性に関しては保証できません。
誠に申し訳ございません。
そもそも、HTMLには、data-(好きな名前)のように、「カスタムデータ属性」が存在しています。
例です。
HTML
1<開始タグ data-好きな名前="値"></終了タグ>
2<div data-teratail="teratail"></div>
3<div data-rubyonrails="thisisrubyonrails"></div>
これに対して、cssを以下のように記述できたりします。
CSS
1div[data-ruby] {
2 color: #AAA;
3}
4[data-rubyonrails] {
5 background-color: #464c56;
6}
そして、これは推測なのですが、おそらくRailsが、アンカー(aタグ)が
クリックされたとき、data-methodという、カスタムデータ属性
(data-method)を読み取って、それでHTTPリクエストを
分けているのだと考えられます。
※あくまでも推測です。正確性は保証できません。
そのような感じです。手助けが出来れば嬉しいです。