2015-06-22 5 views
0

у меня есть некоторые записи, как это одинRails activerecords запрос, ряд spliting

"boss/supervisor/employee" 
"boss" 
"boss/supervisor" 

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

в моем индексе я сделал это:

@jerarquy = Jerarquy.uniq.pluck(:name) 

так, когда я получить все записи из jerarquy колонки:

<select> 
    <% @jerarquy.each do |jer| %> 
     <% jer.split('/').each do |j| %> 
      <option><%= j %></option> 
     <% end %> 
    <% end %> 
</select> 

Я действительно получаю данные из базы данных, но я думаю, что мне нужно что-то изменить в своем контроллере, чтобы получить информацию, которую я хочу, в том порядке, который я хочу, например, если я выбираю босса, я хочу получить/руководитель и/работник тоже, но если я выбрать сотрудника я хочу получить только работник

+0

Вы должны быть более конкретными, вы хотите разбить строку на «/»? Вероятно, это поможет, если вы указали желаемый вывод HTML. Джерарки означает Иерархию? – max

+0

Да, и я хотел бы иметь выбор ввода со всеми данными из этого столбца, не повторяя его – AbdulHamid

ответ

1

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

ary = ["boss/supervisor/employee", "boss", "boss/supervisor"] 
ary.map { |string| string.split('/') }.flatten.uniq 
=> ["boss", "supervisor", "employee"] 

@jerarquy = Jerarquy.uniq.pluck(:name).map { |string| string.split('/') }.flatten.uniq 

<select> 
    <% @jerarquy.each do |jer| %>   
     <option><%= j %></option> 
    <% end %> 
</select> 

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

+0

+1, но я согласен с записью об улучшении дизайна. Сокращение ролей (?) В отдельной таблице, с некоторыми ассоциациями или чем-то гораздо лучше с точки зрения дизайна, как на уровне базы данных, так и на уровне приложений. –

Смежные вопросы