Вложенные блоки Ruby on Rails - PullRequest
       2

Вложенные блоки Ruby on Rails

1 голос
/ 07 февраля 2010

У меня есть блок, в который мне нужно вложить другой блок. Или, может быть, нет, и я делаю это совершенно неправильно. Есть ЕДИНИЦА и ЕДИНИЦА has_many КОМПАНИИ Тогда КОМПАНИИ has_many ПОЛЬЗОВАТЕЛЕЙ

на странице UNIT show Я пытаюсь сделать что-то вроде этого:

<% @company.each do |c|%>
 <%= c.name %>
  <% ??? each do |f| %>
   <p>
   Name: <%= f.name %>
      </p>
<% end %>
<% end %>

Таким образом, в основном для каждой компании я показываю название компании, здесь нет проблем, но затем я пытаюсь показать, что в каждой компании есть конкретные пользователи, которых я включаю в список и которые принадлежат этой компании. Я не могу определить это в контроллере, потому что есть несколько компаний.

Этот пользователь: cc = @ user.find (: все,: условия => ["position =?", "Company Commander"])

Я не уверен, как выполнить цикл для каждой Компании, а затем для этой Компании цикл и список конкретного пользователя для этой компании.

Извините, если я плохо объяснил это. Я не уверен, что это даже правильный способ сделать это.

Заранее спасибо.

Ответы [ 5 ]

2 голосов
/ 07 февраля 2010

Попробуйте это:

<% @company.each do |c| %>
  <%= h(c.name) %>
  <% c.users.each do |u| %>
    <p>Name: <%= h(u.name) %></p>
  <% end %>
<% end %>
1 голос
/ 07 февраля 2010

Во-первых, в вашей модели должны быть определены отношения:

# Unit model
has_many :companies
has_many :users, :through => :companies

# Company model
has_many :users
belongs_to :unit

...

Чем в вашем контроллере устройства:

@unit = Unit.find(params[:id]) # or something similar

А по вашему мнению:

<% @unit.companies.each do |c|%>
 <%= c.name %>
  <% c.users each do |f| %>
   <p>
     Name: <%= f.name %>
   </p>
  <% end %>
<% end %>
0 голосов
/ 08 февраля 2010

Вот что получилось:

named_scope :company_commanders, :conditions =>{:position => 'Company Commander'}

<% @company.each do |c| %>
  <%= h(c.name) %><br />
  <% if c.users.company_commanders.blank? %>
    <%= link_to "Add this User", new_user_path %><br />
  <% else %>
    <% c.users.company_commanders.each do |u| %>
        <p>Name: <%= h(u.name) %></p>
    <% end %>
  <% end %>
<% end %>
</p>
0 голосов
/ 07 февраля 2010

Кажется, вы хотите перечислить пользователей с позицией «Командир компании», связанной с каждой компанией.

Может быть, поможет именованная область для пользователя:

class User < ActiveRecord::Base
  ...
  named_scope :company_commanders, :conditions => "position = 'Company Commander'"
end

Теперь вы можете просматривать их, как считаете нужным.

<% @company.each do |c|%>
 <%= c.name %>
 <% c.users.company_commanders each do |f| %>
   <p>
     Name: <%= f.name %>
   </p>
 <% end %>
<% end %>
0 голосов
/ 07 февраля 2010

если в компании много пользователей, то вы можете просто сделать 'company.users', чтобы получить список пользователей, связанных с этой компанией. тогда вы можете просмотреть или перечислить те, которые вам нравятся.

Предполагая, что вы установили отношения в своих моделях, именно так активная запись устанавливает эти ассоциации для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...