ruby-on-rails-4 - Rails 4/ActiveAdmin : Add link to list all objects from has_many relationship

标签 ruby-on-rails-4 activeadmin

我正在使用cached_counter来跟踪用户的所有评论。 我的模型关系如下所示:

class User  < ActiveRecord::Base  
  has_many :comments
end 

class Comment < ActiveRecord::Base
 comment belongs to user, counter_cache: true
end 

用户表保存计数变量。 在 Activeadmin 中,我有一列 :comments_count 显示每个用户的评论数量。 到目前为止,一切都很好。 现在我想稍微修改一下。我想添加一个链接,该链接指向列出所有评论的页面。怎么才能做到这一点?

我正在查看 AA [现场演示][1],因为他们在那里做了类似的事情。

我的想法是创建一个部分 View 并链接到它。但我正在努力实现它,而且我不知道这是否是最佳实践。 我有这个查询

 Comments.where(:User_id => :id)

但是如何将它嵌入到列中?

感谢您的建议。

最佳答案

您可以通过链接到评论的管理索引页面来处理这种情况,并为给定的user_id预设过滤器。与自定义页面相比,这需要的代码少得多,并且可以让您直接访问范围、过滤器等。

方法如下:

index do
  # make sure you set sortable, so you can click to sort!
  column :comments_count, sortable: 'users.comments_count' do |user|
    link_to user.comments_count,
            admin_comments_path(q: { user_id_eq: user.id })
  end
end

编辑:

ActiveAdmin 索引 Controller 使用 Ransack处理搜索和过滤。 Ransack 接受遵循某种 DSL 的哈希形式的查询选项(上面的 user_id_eq 位就是一个例子)。现在,如果您打开任何 ActiveAdmin 索引路由并开始使用过滤器,您将看到这些参数使用相同的约定附加到 url 的末尾。 ?q=... 部分直接传递到索引 Controller 中的 Ransack,这就是过滤模型的方式。我们上面的代码只是链接到带有 id 预设过滤器的索引页面。您还可以添加其他过滤器、排序顺序,甚至范围。

关于ruby-on-rails-4 - Rails 4/ActiveAdmin : Add link to list all objects from has_many relationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32613518/

相关文章:

ruby-on-rails - 是否可以使用我们尚未安装的 rails 版本创建新的 rails 应用程序?

ruby - 在 Rails 应用程序中生成 Flat UI Pro 时无法在任何源路径中找到 'flat-ui.css'

smtp - NOQUEUE:拒绝:来自本地主机的 RCPT[::1]:554 5.7.1 与本地主机断开连接

ruby - 如何在范围内使用模型方法?

ruby-on-rails - ActiveAdmin:没有对应表属性的表单输入

ruby-on-rails - 缓慢的 activeadmin 索引页面

ruby-on-rails - 如何将符号转换为字符串(即带前导 :) ruby to_yaml

devise - Ruby on Rails - 设计错误 : undefined local variable or method

ruby-on-rails - rails : Active Admin Association Image column

ruby-on-rails - ActiveAdmin创建方法