У меня есть класс пользователя, который has_many возобновляет, каждый из которых имеет много элементов. На моей странице users/show я делаю несколько резюме, которые работают. В моем users_controller у меня есть следующие:Как получить доступ к id в модели
def show
...
@resumes = @user.resumes.paginate(page: params[:page])
@resume = @user.resumes.build if user_signed_in?
@resume_items = @user.res.paginate(page: params[:page])
@edu_items = @resume.edu.paginate(page: params[:page])
...
end
Я определил функцию Рез в моей модели пользователя:
def res
Resume.where("student_id = ?", id)
end
И это работало достаточно хорошо. Тем не менее, я пытаюсь сделать то же самое с функцией EDU в моей модели Резюме:
def edu
Education.where("resume_id = ?", id)
end
, но это не работает, @edu_items не создаются ни к чему. Теперь я знаю, что это связано с этим методом, потому что, если я изменяю идентификатор на идентификатор конкретного резюме, то элементы этого резюме отображаются правильно, за исключением каждого резюме. Я знаю, что это простое решение, я просто смотрел на него слишком долго и не могу понять. Любые советы были бы потрясающими.
EDIT: @ makaroni4: вместо того, чтобы иметь @educations = @ user.educations, я предпочел бы сохранить элементы из каждого резюме отдельно. Можно ли определить такой метод, как образование, которое будет делать @educations = @ resume.educations?
EDIT 2: Мне удалось получить то, что я пытался сделать, спасибо за совет. Я решил его покончив с методом образова в целом, и проходя локальные переменные парциальное:
<%= render :partial => 'shared/edu', :as => :educations, :locals => {:resume_educations => resume_item.educations} %>
общий/Edu
<% if resume_educations.any? %>
<ol class="educations">
<%= render partial: 'shared/edu_item', collection: resume_educations %>
</ol>
<%= will_paginate @educations %>
<% end %>
Вероятно, не самое чистое решение, но это, кажется, работает.
Любые причины, по которым вы не используете стандартные отношения рельсов? ('принадлежит_то',' has_many', ...) – Romain
Я. В частности, у меня есть: пользователь has_many возобновляет, возобновляет has_many элементы и принадлежит пользователю, а item belongs_to возобновляет. –
Если вы создали эти отношения в своих моделях, вам не нужны эти методы. Вы можете просто выполнить '@ user.resumes.paginate' и' @ resume.items.paginate'. Вы пытаетесь выполнить работу, которую Rails уже делает для вас. – Mischa