0

ビューページにチェックボックスを表示しています。データはデータベースから取得されます。これが私のコードです。問題は、同じ親の名前が来た場合にループしているときに、同じ親のチェックボックスが2回表示されることです。

<% @permission.each do |f| %>
        <% if @controller_code != f.controller_code %>
            <% @controller_code = f.controller_code %>
            <%= check_box_tag "cntrl_#{f.controller_code}", f.controller_code, false,  :class => "Par_#{f.controller_code}", :id => "Par_#{f.controller_code}" %> <%= f.controller_name %>
            <br/>
            <% @permission.each do |f| %>
                <% if @controller_code == f.controller_code %>
                    &nbsp;  &nbsp;<%= check_box_tag "action_#{f.controller_code}_#{f.action_code}",f.action_code, false,  :class => "Child_#{f.controller_code}", :id => "Child_#{f.controller_code}_#{f.action_code}" %> <%= f.action_name %>
                    <br/>
                <% end %>
            <% end %>   
        <% end %>

私もこの方法を試しましたが、正しく機能していません。

<% @permission.each do |f| %>   
            <% if @controller_code != f.controller_code %>
            <% @controller_code = f.controller_code %>
                <%= check_box_tag "cntrl_#{f.controller_code}", f.controller_code, false,  :class => "Par_#{f.controller_code}", :id => "Par_#{f.controller_code}" %> <%= f.controller_name %>
             <br/>
            <% end %>
            &nbsp;  &nbsp;<%= check_box_tag "action_#{f.controller_code}_#{f.action_code}",f.action_code, false,  :class => "Child_#{f.controller_code}", :id => "Child_#{f.controller_code}_#{f.action_code}" %> <%= f.action_name %>
            <br/>        
<% end %>
4

2 に答える 2

0

ここで私の質問の解決策を見つけました。コントローラーは次のことを行います

 @permission=Permission.all.where(active: 1)
if @permission.blank? == false
  @permissions =  Permission.all.where(active: 1).order_by(:controller_code => "asc")
else
  @permissions = ""
end

そして、ビューページで次のことを行います

<% @permissions.each do |f| %>
        <% if @controller_code != f.controller_code %>
            <% @controller_code = f.controller_code %>
            <%= check_box_tag "cntrl_#{f.controller_code}", f.controller_code, false,  :class => "Par_#{f.controller_code}", :id => "Par_#{f.controller_code}" %> <%= f.controller_name %>
            <br/>
            <% @permissions.each do |f| %>
                <% if @controller_code == f.controller_code %>
                    &nbsp;  &nbsp;<%= check_box_tag "action_#{f.controller_code}_#{f.action_code}",f.action_code, false,  :class => "Child_#{f.controller_code}", :id => "Child_#{f.controller_code}_#{f.action_code}" %> <%= f.action_name %>
                    <br/>
                <% end %>
            <% end %>   
        <% end %>
    <% end %>
于 2012-10-30T04:54:38.757 に答える
0

私はあなたの質問に正確な答えを与えているかどうかわかりません.これはあなたを助けることができると思います.

<% @permission.each do |f| %>
    <% if @controller_code != f.controller_code %>
        <% @controller_code = f.controller_code %>
        <%= check_box_tag "cntrl_#{f.controller_code}", f.controller_code, false,  :class => "Par_#{f.controller_code}", :id => "Par_#{f.controller_code}" %> <%= f.controller_name %>
    <% else %>
      <%= check_box_tag "action_#{f.controller_code}_#{f.action_code}",f.action_code, false,  :class => "Child_#{f.controller_code}", :id => "Child_#{f.controller_code}_#{f.action_code}" %>        
      <%= f.action_name %>
    <% end %>
<% end %>
于 2012-10-26T13:36:30.963 に答える