两个问题:
1)如何在模型的'list'中创建一个列来自记录关联的数据?换句话说,我有一个用户模型和一个用户has_many帖子。我想在列表中只有一个“帖子计数”列。我试过了:
field :posts do
formatted_value do
value.count
end
end
但是会导致零除错误。我甚至尝试过:
field :posts do
formatted_value do
bindings[:object].posts.count
end
end
但结果相同。
2)如何将列表过滤到特定范围?例如,我想让用户的帖子数是一个可点击的链接,它将显示给定用户的所有帖子。
我能弄明白如何做到这一点的最好方法是:
# note that I created a method post_count to temporarily solve problem #1
field :post_count do
formatted_value do
bindings[:view].link_to value, "/admin/posts?query=#{bindings[:object].id}"
end
end
哪种方法效果不佳。有没有办法指示rails-admin在模型上执行.where(:user_id => xxx)
?
另一件我并不疯狂的事情是必须手动输入'admin / posts'..我试图看看我是否可以rails_admin_list_path(:model_name => "posts")
。但这似乎不起作用。
答案 0 :(得分:1)
您可能会在rails_admin邮件列表中获得更好的回复 - http://groups.google.com/group/rails_admin/
对于你的第一个问题,这应该可以解决问题:
field :posts, :virtual do
formatted_value do
bindings[:object].posts.count
end
end
对于您的第二个问题,rails_admin现在有一个过滤系统 - 请参阅http://demo.railsadmin.org/admin/players处的“添加过滤器”下拉列表。利用这将是一个更好的方法。
rails_admin_list_path(:model_name => "posts")
应该有效,您可能必须include Rails.application.routes.url_helpers
或类似。
答案 1 :(得分:0)
尝试将此添加到您的rails_admin.rb
RailsAdmin.config {|c| c.label_methods << :field_name}
为我工作