Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在Ransack Gem的rails 4中使用带有模型实例方法的sort_link?_Ruby_Ruby On Rails 4_Sqlite_Ransack - Fatal编程技术网

Ruby 如何在Ransack Gem的rails 4中使用带有模型实例方法的sort_link?

Ruby 如何在Ransack Gem的rails 4中使用带有模型实例方法的sort_link?,ruby,ruby-on-rails-4,sqlite,ransack,Ruby,Ruby On Rails 4,Sqlite,Ransack,我使用了Ransack Gem,Rails 4 角色\u控制器.rb def index @q = Role.ransack(params[:q]) @roles = @q.result(distinct: true) end def user_count self.users.count end <table class="table table-bordered table-framed rb-usr-tbl"> <thead&g

我使用了Ransack Gem,Rails 4

角色\u控制器.rb

def index
  @q = Role.ransack(params[:q])
  @roles = @q.result(distinct: true)
end
  def user_count
    self.users.count
  end
    <table class="table table-bordered table-framed rb-usr-tbl">
    <thead>
    <tr>
      <th><%= sort_link(@q, :name) %></th>
      <th>Description</th>
      <th><%= sort_link(@q,:role_users_user_count) %></th>
      <th colspan="2">Actions</th>
    </tr>
    </thead>

    <tbody class="role-index">
     <% @roles.each do |role| %>
        <tr>
          <td><%= role.human_role %></td>
          <td><%= role.description %></td>
          <td><%= role.user_count %></td>

          <td>
            <%= link_to edit_role_path(role), :remote => true,:title => "Edit Role" do %>
                <i class="icon-pencil7 rb-pencil"></i>
            <% end %>
          </td>
          <td>
            <%= link_to role, method: :delete,:title => "Delete Role", data: { confirm: 'Are you sure?' } do %>
                <i class="icon-trash rb-trash"></i>
            <% end %>
          </td>

        </tr>
    <% end %>
    </tbody>
  </table>
这是模型中的实例方法(role.rb)

这是我的html表格标题(Roles/index.html.erb)


描述
行动
true,:title=>“编辑角色”do%>
“删除角色”,数据:{确认:'确定吗?}执行%>
用户和角色之间存在关系,一个角色有多个用户

在这里,我想按asc和desc顺序对用户计数进行排序,但使用此代码它不起作用。

如果可以的话,请帮助我


谢谢

Ransack本身非常聪明,试着换线

<th><%= sort_link(@q,:role_users_user_count) %></th>



说明:在变量
@q
中,您在模型
角色
上保留了一个Ransack查询对象,如果您在
@q
上调用
排序链接
,它将应用
用户计数
作为“加入用户关系并按用户计数排序”.

您还可以从角色控制器粘贴索引方法的代码吗?这里我已经上传了控制器和视图的代码。如果您有,请检查并告诉我解决方案。@Surya:您有问题的答案吗?试试这个:我怀疑您的角色中有user_id列,那么您可能需要相应地更改ransack的查询。尝试在“角色”表中为用户设置计数器缓存,然后使用“用户计数”进行排序,如链接中所述。@Surya:用户表中有角色id。你给出的链接与我所问的不同。首先理解我的问题,然后给出答案。
<th><%= sort_link(@q, :users_count) %></th>