我有一个用户类,其中有很多简历,每个都有很多项目。在我的用户/显示页面上,我呈现了多份简历,这是有效的。在我的 users_controller 中,我有以下内容:
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
我在我的用户模型中定义了函数 res:
def res
Resume.where("student_id = ?", id)
end
这工作得很好。但是,我正在尝试对我的 Resume 模型中的函数 edu 做同样的事情:
def edu
Education.where("resume_id = ?", id)
end
但它不起作用,@edu_items 没有被设置为任何东西。现在我知道它与这个方法特别有关,因为如果我将 id 更改为特定简历的 id,则该简历的项目将正确呈现,除了每个简历。我知道这是一个简单的解决方法,此时我已经盯着它看了太久,无法弄清楚。任何建议都会很棒。
编辑:@makaroni4:我不想让@educations = @user.educations,而是将每个简历中的项目分开。是否可以定义一种方法,例如使@educations = @resume.educations 的教育方法?
编辑2:我设法让我想做的工作,谢谢你的建议。我通过完全取消 edu 方法并将局部变量传递给局部变量来解决它:
<%= render :partial => 'shared/edu', :as => :educations, :locals => {:resume_educations => resume_item.educations} %>
共享/教育
<% if resume_educations.any? %>
<ol class="educations">
<%= render partial: 'shared/edu_item', collection: resume_educations %>
</ol>
<%= will_paginate @educations %>
<% end %>
可能不是最干净的解决方案,但它似乎有效。