访问Ransack中关联模型的属性

时间:2018-05-02 14:49:15

标签: ruby-on-rails nested-attributes ransack

我有一个仪表板,显示从用户和保姆模型中获取的结果。

在我的user.rb中,我有

User has_many :nannies

nanny.rb有

Nanny belongs_to :user

用户有一些基本属性(姓名,电子邮件,电话等) 保姆有其他属性(性别,小时,天等) 现在,我有这些线来实现Ransack并根据过滤器获取用户。控制器的索引方法是

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

我可以根据Nanny的属性过滤掉结果。视图中的过滤器表单就像这样

<%= 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 %>

我收到错误&#39;未定义的方法用户时间&#39; (显然属于Nanny模型)。

我需要能够实现以下目标

  1. 加载所有用户及其相关的保姆

  2. 运行Ransack并过滤掉结果

  3. 在视图中显示所有关联模型的所有属性

  4. 非常感谢此问题中的任何指导/更正。

1 个答案:

答案 0 :(得分:2)

假设您的问题是如何修复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