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

Rails下拉菜单中link_to按钮显示路径而非文本、URL异常问题

问题根因

异常是Ruby代码解析优先级和Rails link_to 块调用规则共同导致的:

  • 不带块的link_to参数规则为 link_to(显示文本, 路径, HTML选项),你之前的参考代码符合这个规则所以运行正常
  • 带块自定义内部内容的link_to参数规则为 link_to(路径, HTML选项) do 自定义内容 end,你没有用括号明确参数边界,同时将if article.post.present?判断直接写在do关键字前,导致Ruby解析时错误将class参数识别为路径的查询参数,块内容也没有正确绑定到link_to方法,最终出现显示路径文本、跳转地址异常的问题。

修复方案

写法1(推荐,逻辑更清晰)

将存在性判断移到外部包裹整个link_to逻辑:

<% if article.post.present? %>
  <%= link_to edit_profile_post_path(article.profile, article.post), class: "dropdown-item" do %>
     <div class="flex">
        <div class="w-5 mr-2 flex items-center justify-center">
           <i class="text-inherit fal icon-sm fa-pen" aria-hidden="true"></i>
        </div>
      Edit Post
    </div>
  <% end %>
<% end %>

写法2(保留行内判断)

用括号明确link_to的参数边界即可:

<%= link_to(edit_profile_post_path(article.profile, article.post), class: "dropdown-item") if article.post.present? do %>
   <div class="flex">
      <div class="w-5 mr-2 flex items-center justify-center">
         <i class="text-inherit fal icon-sm fa-pen" aria-hidden="true"></i>
      </div>
    Edit Post
  </div>
<% end %>

额外提示

原代码使用的fa-trash-alt是删除类图标,编辑功能建议替换为fa-pen类的编辑图标,避免用户操作误解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:09:01