Большинство Rubyists были бы в ужасе от этого кода и убежали бы.Вместо ответа на ваш вопрос (который, если его решить, сделает ваше приложение еще более ужасным), вот некоторые основы;сделайте это, чтобы вы могли начать задавать вопросы, на которые люди ответили бы.
Rails выполняет большую часть работы за вас, поэтому вам не нужно находить отношения с идентификаторами или настраивать массивы самостоятельно.Переменные экземпляра используются для передачи данных в представление.Попробуйте передать представление именно то, что ему нужно, и не более.
Сначала установите отношения с моделями ...
models / user.rb
class User
has_one :employee
end
моделей / employee.rb
class Employee
belongs_to :user
has_and_belongs_to_many :employee_subjects
end
моделей / employee_subject.rb
class EmployeeSubject
has_and_belongs_to_many :employees
has_one :batch
end
models / batch.rb
class Batch
belongs_to :employee_subject
end
has_and_belongs_to_many немного сложнее, поэтому внимательно прочитайте документы: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_and_belongs_to_many
Тогда вы можете упростить действия контроллера до одной строки ...
controllers / online_exams_controller.rb
def index
@subjects = current_user.employee.employee_subjects
end
и в ваших представлениях ...
views / online_exams / index.html.erb
<ul>
<%= render :partial => '/subjects/list_view', :collection => @subjects, :as => :subject %>
</ul>
views / employee_subjects / _list_view.html.erb
<li>
Name: <%= subject.name -%>, Code: <%= subject.code -%>,
Batch Name: <%= subject.batch.name -%>
</li>
Прежде чем продолжить, подумайте, как работает ваше приложениеобъекты должны быть организованы и связаны, и попытаться использовать имена, которые имеют смысл.Узнайте больше о концепциях объектно-ориентированного программирования, следуйте некоторым учебникам по Rails и научитесь создавать приложения с числом строк кода в 10 раз меньше!