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

Rails 6配置jQuery后remote:true链接触发FavoritesController模板缺失如何解决

问题原因

报错提示FavoritesController的update动作缺少对应text/html格式的模板,核心原因是你配置的remote: true未生效,Rails UJS没有将链接请求转换为JS格式的Ajax请求,导致请求以默认HTML格式发送。

解决方案
    1. 修正application.js的加载顺序
      Rails UJS 必须在Turbolinks之前加载才能正确接管页面元素的remote属性,你当前的加载顺序错误,将javascript/packs/application.js的内容调整为:
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("jquery") 
    1. 给链接强制指定JS请求格式
      在link_to的路由参数中添加format: :js,强制请求返回JS格式响应,修改views/annonces/show.html.erb中的链接代码为:
<%= link_to favorite_text, favorites_update_path(annonce: @annonce, format: :js), id: "favorite_link", remote: true %>
    1. 可选:优化控制器响应逻辑
      如果不需要HTML格式的响应,可以把controller中format.html的分支改为重定向,避免缺失模板报错:
respond_to do |format|
  format.html { redirect_back fallback_location: root_path }
  format.js {}
end
验证方法

修改完成后重启Rails服务,点击收藏链接,打开浏览器控制台的网络面板,查看对应请求的请求头Accept字段包含text/javascript即代表配置生效,不会再报模板缺失错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:45:03