Rails 7 で破棄するのではなくアクションを表示するようにリダイレクトします。
概要
Rubyのバージョンは3.1.2、Railsのバージョンは7.0.3.1です。
ユーザーを削除すると、ユーザーのコントローラーのアクションを破棄するのではなく、アクションを表示するようにリダイレクトされます。 ユーザー向けのルート
resources :users
アプリ/コントローラー/users_controller.rb
before_action :set_user, only: %i[ destroy ]
def destroy
@user.destroy
respond_to do |format|
format.html { redirect_to users_url, notice: "User was successfully destroyed." }
format.json { head :no_content }
end
end
private
def set_user
@user = User.find(params[:id])
end
app/views/users/index.html.erb
<% @users.each do |user| %>
<div id="users">
<%= render user %>
<% end %>
</div>
app/views/users/_user.html.erb
<p>
<%= link_to "Destroy this user", user, method: :delete %>
</p>
ユーザーを削除できません。
以下のリンクをたどりましたが、それも私のプロジェクトでは機能しません link_to ヘルパーはまだ get リクエストを実行しています
ありがとう!
解決策
フォームによる魔法の軽減
<%= button_to "Destroy this user", user, method: :delete %>
またはリンクを使用したその他の魔法
<%= link_to "Destroy this user", user, data: { turbo_method: :delete } %>
そして、redirect_to users_url に status: :see_other を追加することを忘れないでください。
Rails 7はそのように動作します