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

添加权限复选框后角色创建页出现参数的原因排查

问题原因及解决方案

问题根源

页面上出现权限参数内容的核心原因是遍历权限时错误使用了<%=标签:

<%= @permissions.each do |permission|%>

<%=会把Ruby代码的执行结果直接输出到HTML页面中,而each方法执行后会返回原数组@permissions,所以数组的内容就被直接渲染到页面上了。

修复步骤

  1. 修正循环输出标签:把遍历行的<%=改成<%,这样只会执行循环逻辑,不会输出each的返回值:
    <% @permissions.each do |permission|%>
      <%= check_box_tag 'permission_ids[]', permission.id %>
      <%= label_tag "permission_ids[]", permission.name %>
    <% end %>
    
  2. 优化复选框与标签关联:将原来的f.label :permission_name替换为label_tag "permission_ids[]",这样点击权限名称时能自动选中对应的复选框,提升交互合理性。

完整修正后的代码片段

<% provide(:title, "Create Roles") %>
<h1 class="dashboard">Create Role</h1>

<div class="row">
 <div class="col-md-6 col-md-offset-3">
  <%= form_with(model: @role, local: true) do |f| %>
  <%= render 'shared/error_messages', object: f.object %>

  <%= f.label :name %>
  <%= f.text_field :name, class: 'form-control' %>

  <% @permissions.each do |permission|%>
   <%= check_box_tag 'permission_ids[]', permission.id %>
   <%= label_tag "permission_ids[]", permission.name %>
  <% end %>

  <%= f.hidden_field :company_id , value: 2%>

  <%= f.submit "Create Role", class: "btn btn-primary bottom" %>
  <% end %>
 </div>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:30:47