You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails带remote: true的post请求link_to控制器重定向失效问题

问题原因

你给link_to加了remote: true参数,这代表该请求是AJAX异步请求,Rails默认服务端返回的redirect_to指令对AJAX请求不生效,浏览器不会自动执行重定向操作,需要额外返回JS逻辑触发前端跳转。

解决方法

根据你的业务需求选以下任意一种方案即可:

  • 方案1:不需要异步交互,直接删除link_to中的remote: true参数,修改后代码如下:
    <%= link_to "Click here", check_path, method: :post %>
    
    此时请求为同步提交,控制器中原有的redirect_to other_path逻辑会正常生效。
  • 方案2:需要保留异步交互能力,修改控制器的校验响应逻辑:
    将你控制器中place不存在时的重定向逻辑替换为返回JS跳转指令,示例代码如下:
    def check_payer
      # 你原有的place存在性校验逻辑
      unless @place.present?
        respond_to do |format|
          format.js { render js: "window.location.href = '#{other_path}'" }
        end
        return
      end
      # 你原有的其他业务逻辑
    end
    
    该方案不需要修改前端link_to代码,服务端返回的JS代码会自动触发浏览器跳转。
注意事项
  • 确保你的全局布局文件(通常是app/views/layouts/application.html.erb)中包含<%= csrf_meta_tags %>标签,避免POST请求出现CSRF校验错误。
  • 如果你配置了路由约束,需要确保check_path支持JS格式的响应,默认Rails路由配置无额外约束时无需修改。

内容的提问来源于stack exchange,提问作者Caio Felipe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:24:03