私はユーザークラスを持っていますが、それぞれhas_manyレジュームがあり、それぞれに多くのアイテムがあります。私のユーザ/ショーページでは、複数の履歴書をレンダリングしています。私の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
私は私のUserモデルにおける機能RES定義さ:
def res
Resume.where("student_id = ?", id)
end
をそして、それは非常によく働きました。
def edu
Education.where("resume_id = ?", id)
end
が、それは働いていない、@edu_items何に設定されていない。しかし、私は私の履歴書モデルで機能EDUと同じことをやろうとしています。特定のレジュームのidにIDを変更すると、レジュームのアイテムはすべてのレジュームを除いて正しくレンダリングされるため、このメソッドとは具体的に関係していることがわかりました。私はそれが簡単な修正だと知っている、私はちょうどこの時点であまりにも長くそれを見つめているとそれを把握することはできません。どんなアドバイスも素晴らしいだろう。
EDIT:@ makaroni4:@educations = @ user.educationsの代わりに、各レジュームのアイテムを別々にしておきたいと思います。 @educations = @ resume.educationsを作る教育のようなメソッドを定義することは可能ですか?
編集2:アドバイスをいただきありがとうございました。おそらく
<% if resume_educations.any? %>
<ol class="educations">
<%= render partial: 'shared/edu_item', collection: resume_educations %>
</ol>
<%= will_paginate @educations %>
<% end %>
ないクリーンなソリューション
<%= render :partial => 'shared/edu', :as => :educations, :locals => {:resume_educations => resume_item.educations} %>
が共有/ EDUが、動作しているようです:私は完全にEDU方法で離れて行って、そして部分的にローカル変数を渡すことによってそれを解決しました。
標準レール関係を使用していない理由は何ですか? ( 'belongs_to'、' has_many'、...) – Romain
私は午前です。具体的には、ユーザーhas_manyが再開し、has_manyアイテムとbelongs_toユーザーが再開し、アイテムbelongs_toが再開します。 –
モデルでこれらのリレーションシップを作成した場合、これらのメソッドは必要ありません。 '@ user.resumes.paginate'と' @ resume.items.paginate'を実行するだけです。あなたはすでにRailsがあなたのためにしている仕事をしようとしています。 – Mischa