Как я могу получить rails_admin для правильной обработки ассоциаций? - PullRequest
2 голосов
/ 16 июня 2011

Два вопроса:

1) Как сделать столбец в «списке» для модели, состоящей из данных ассоциации записи? Другими словами, у меня есть пользовательская модель и пользователь 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"). но это не сработало.

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Возможно, вы получите лучший ответ в списке рассылки 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 или аналогичный.

0 голосов
/ 27 ноября 2011

Попробуйте добавить это в свой rails_admin.rb

RailsAdmin.config {|c| c.label_methods << :field_name} 

, работало для меня

...