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

Rails5.2.6+Bootstrap5.2:编辑按钮跳转无效页面而非弹出模态框的修复

问题描述

在Rails 5.2.6 + Bootstrap 5.2环境下,两个页面的编辑按钮表现不一致:一个能正常弹出编辑模态框,另一个会跳转到不存在的页面。

正常按钮代码

<%= link_to icon('fas', 'pen'), edit_task_path(task, redirect_to: tasks_url(view: params[:view])), title: 'Editar', remote: true, class: "px-1" %>

调试结果

(byebug) tasks_url(view: params[:view])
"http://localhost:3000/tasks?view=table"
(byebug) params
<ActionController::Parameters {"group_by"=>"task_category_html",
"view"=>"table", "controller"=>"tasks", "action"=>"index",
"default_date"=>Thu, 07 Dec 2023} permitted: false>

异常按钮代码

<%= link_to edit_task_path(task, redirect_to: tasks_url(view: params[:view])), remote: true, class: 'btn btn-outline-primary' %>
        <span class="fas fa-pen" aria-hidden="true"></span> Editar
<% end %>

调试结果

(byebug) tasks_url(view: params[:view])
"http://localhost:3000/tasks?view=table"
(byebug) params
<ActionController::Parameters {"group_by"=>"task_category_html", "view"=>"table", "controller"=>"tasks", "action"=>"index", "default_date"=>Thu, 07 Dec 2023} permitted: false>
问题原因

异常按钮的link_to语法错误:使用了块结束标签<% end %>,但没有用do开启块结构。这会导致生成的HTML结构混乱,Rails UJS无法正确识别remote: true属性,从而没有触发AJAX请求,转而执行了普通的页面跳转。

修复方案

将异常按钮的link_to改为正确的块写法:

<%= link_to edit_task_path(task, redirect_to: tasks_url(view: params[:view])), remote: true, class: 'btn btn-outline-primary' do %>
  <span class="fas fa-pen" aria-hidden="true"></span> Editar
<% end %>

额外验证点

  • 确认页面已正确引入Rails UJS(application.js中包含//= require rails-ujs)
  • 检查edit动作的控制器已配置响应AJAX请求(比如包含respond_to :html, :js,且存在对应的edit.js.erb视图文件)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:55:23