【问题标题】:Grouping records by user in Admin view在管理员视图中按用户分组记录
【发布时间】:2019-09-04 05:34:09
【问题描述】:

我想在以管理员身份登录时获取所有记录及其用户名。为此,我的控制器代码如下;

amol361s_controller.rb

    def index

        if current_user.admin
          @amol361s = Amol361.all.search(params[:search]).order("created_at ASC")
          @users = User.all.amol361s
        else
          @amol361s = current_user.amol361s.all.search(params[:search]).visible.order("created_at ASC") 
        end

        respond_to do |format|
          format.html
          format.js
        end

    end

index.html.erb

<tbody id = "kola">              
<% @users.each do |user| %>
<%= user.amol361s.each do |amol361| %>

<tr class="tr-<%= cycle('odd', 'even') %>" id='<%= "tr_#{amol361.id}" %>'>


<% if current_user && current_user.admin %>
<td class="col-1"><%= link_to amol361.date.try(:strftime,'%d/%m/%Y'), edit_amol361_path(amol361) %></td>
<% else %>
<td class="col-1"><%= amol361.date.try(:strftime,'%d/%m/%Y') %></td>
<% end %>

<td class="col-3"><%= span_with_possibly_red_color amol361.description %></td>


<td class="col-1"><%= number_with_precision(amol361.amount, :delimiter => ",", :precision => 2) %></td>

<td class="col-1 neg"><%= number_with_precision(amol361.discount, :delimiter => ",", :precision => 2) %></td>

<td class="col-1 neg"><%= number_with_precision(amol361.paid, :delimiter => ",", :precision => 2) %></td>


<% @balance += amol361.amount.to_f - amol361.discount.to_f - amol361.paid.to_f %>

<% color = @balance >= 0 ? "pos" : "neg" %>

<td class="col-1 <%= color %>"><%= number_with_precision(@balance.abs, :delimiter => ",", :precision => 0) %></td>

<td class="col-1"><%= amol361.delndel %></td>

<td class="col-1"><%= amol361.remark %></td>

<% if current_user && current_user.admin %>
<td class="col-1"><%= link_to "Hide", hide_amol361_path(amol361), method: :put, remote: true, style: "color:#bb7272;" %>
<%= link_to amol361, method: :delete, data: { confirm: "Are you sure?" }, :class => 'delete_item' do %>
<i class="fa fa-trash" ></i>
<% end %>
</td>
<% end %>

</tr>

<% end %>
<% end %>


</tbody>

现在我收到的错误是 undefined method amol361s' for #User::ActiveRecord_Relation:0x00007f5dec19d088

所以,我试图获取用户名后面的记录,类似于我们根据月份收集记录的方式。

欢迎提出任何建议。

提前谢谢你。

【问题讨论】:

    标签: ruby ruby-on-rails-5


    【解决方案1】:

    据我了解,如果当前用户是管理员,您可以简单地预先加载用户记录,如下所示:

    @amol361s = Amol361.includes(:user).search(params[:search]).order("created_at ASC")
    

    如果你这样做,只需在这个关系的每个成员上调用关联,就可以有效地获取用户数据,如下所示:

    # example:
    @amol361s.first.user.username # or whatever the name of username column is
    

    我不确定我是否正确理解了您的问题,因为我有点不清楚。

    【讨论】:

    • 感谢您的回复。我只是通过添加图片进行编辑以清晰理解。
    • 好的,所以您需要在管理员视图中按用户对Amol361 记录进行分组,对吧?
    • 那么为什么不按正确的顺序获取包括amol361s 在内的用户,然后在视图中执行&lt;% @users.each do |user| %&gt; 之类的操作,并在其中执行&lt;%= user.amol361s.each do |amol361| %&gt; 之类的操作?
    • 感谢您的回复。实际上我正在度假,所以回复晚的原因。我尝试在我的索引视图中使用上面的代码,但它把错误抛出为“#<:activerecord_relation:0x00007f5de88d0250> 的未定义方法 `amol361s'”并且在我的控制器中我将代码放置为“@amol361s = Amol361. all.search(params[:search]).order("created_at ASC") 和 @users = User.all.amol361s" 。等待您的回复。
    • 未定义方法 amol361s' 用于 # User::ActiveRecord_Relation:0x00007f5dec19d088。
    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多