link_to with remote: true 仍在刷新页面

Posted

技术标签:

【中文标题】link_to with remote: true 仍在刷新页面【英文标题】:link_to with remote: true still refreshing the page 【发布时间】:2021-07-20 18:39:27 【问题描述】:

我正在尝试创建一个 link_to 以向愿望清单添加(创建实例)或删除(销毁实例)交易,它看起来像一颗心,单击它时会创建或删除愿望清单实例。到目前为止它正在工作,但唯一的问题是它不断刷新页面,我添加了 remote: true 但每次我从愿望清单中添加或删除时我都会不断刷新。我正在使用 Rails 6

<%= link_to current_user.wishlist?(@deal) ? current_user.wishlist?(@deal) : deal_wishlists_path(@deal), class: "btn btn-light", method: current_user.wishlist?(@deal) ? :delete : :post, remote: true do %>
      <% if current_user.wishlist?(@deal) %>
        <i class="fas fa-heart"></i>
        <span>Enregistré</span>
      <% else %>
        <i class="far fa-heart"></i>
        <span>Wishlister</span>
      <% end %>
    <% end %>


class WishlistsController < ApplicationController
  before_action :find_deal, except: :destroy
  def create
    @wishlist = @deal.wishlists.create!(user_id: current_user.id)
    redirect_to deal_path(@deal)
  end

  def destroy
    @wishlist = Wishlist.find(params[:id])
    @wishlist.destroy
    redirect_to deal_path(@wishlist.deal)
  end

  private

  def find_deal
    @deal = Deal.find(params[:deal_id])
  end
end

谢谢

【问题讨论】:

这不是按钮,而是您的控制器。它每次都会重定向。要在不重新加载页面的情况下更新页面,您需要以不同的方式处理 ajaxy 请求。看看这个帖子,例如:medium.com/swlh/…应该给你一个想法。 【参考方案1】:

因为您在控制器中使用了 redirect_to deal_path(...)。只需删除它们。

【讨论】:

以上是关于link_to with remote: true 仍在刷新页面的主要内容,如果未能解决你的问题,请参考以下文章

link_to 和 remote => true + jquery:怎么样?帮助?

在rails中带有jquery参数的link_to

Rails form_with(remote:true)错误

Rails:禁用link_to链接不起作用但隐藏link_to工作

Rails 4 link_to方法::post和remote:真正的奇怪行为

远程 link_to 请求的是 html 而不是 js