Доступ к атрибутам связанных моделей в Ransack - PullRequest
0 голосов
/ 02 мая 2018

У меня есть панель инструментов, которая показывает результаты, полученные от модели пользователей и нянь.

В моем user.rb у меня есть

User has_many :nannies

Няня.рб имеет

Nanny belongs_to :user

Пользователь имеет некоторые основные атрибуты (имя, адрес электронной почты, телефон и т. Д.) Няня имеет другие атрибуты (пол, часы, дни и т. Д.) Прямо сейчас у меня есть эти строки для реализации Ransack и выборки пользователей в соответствии с фильтрами. Индексный метод контроллера -

@users = User.ransack(params[:q])
@people = @users.result

Я могу отфильтровать результаты по атрибутам от няни. Форма фильтра в представлении выглядит следующим образом

<%= search_form_for @users do |f| %>
  <%= f.label :firstname_cont %>
  <%= f.search_field :firstname_cont %> 

  <%= f.label :lastname_cont %>
  <%= f.search_field :lastname_cont %>

  <%= f.label :role_eq %>
  <%= f.search_field :role_eq %>

  <%= f.label :nannies_gender_cont %>
  <%= f.search_field :nannies_gender_cont %>

  <%= f.label :nannies_hours_eq %>
  <%= f.search_field :nannies_hours_eq %>

 <%= f.submit %>
<% end %>

Результаты отображаются так:

    <% @people.each do |test| %>
      <%= test.id %>
      <%= test.firstname %>
      <%= test.email %>
      <%= test.hours %>
    <% end %>

Я получаю сообщение об ошибке «неопределенный метод часов для пользователя» (что, очевидно, относится к модели няни).

Мне нужно, чтобы я смог достичь следующего

  1. Загрузить всех пользователей и связанных с ними нянь

  2. Запустить Ransack и отфильтровать результаты

  3. Показать все атрибуты из всех связанных моделей в представлении

Буду очень признателен за любые указания / исправления в этом выпуске.

1 Ответ

0 голосов
/ 02 мая 2018

Предполагая, что ваш вопрос, как исправить undefined method hours for User:

Следующее решение на самом деле не «вещь» Ransack, а скорее просто «вещь» Rails:

<% @people.each do |test| %>
  <%= test.id %>
  <%= test.firstname %>
  <%= test.email %>
  <% test.nannies.each do |nanny| %>
    <%= nanny.hours %>
  <% end %>
<% end %>
  • Вам нужно перебрать все nanny, которые принадлежат test (из которых User запись), и оттуда только тогда, когда вы можете получить доступ к hours значению для каждого nanny
...