私は次のテーブルを持っています:
projects
users
projects_users <- relational table
ビューでは、すべてのプロジェクトをループして、ユーザーとの関係(所有者、メンバー、メンバーではない)に応じて、異なるクラス(およびリンクされているかどうか)でプロジェクトを1つずつレンダリングしています。
これは、ユーザーがメンバーであるかどうかを確認する3行目のifステートメントを除いてうまく機能します。'check_if_member'は、プロジェクトヘルパーにあります(以下を参照)。次のエラーメッセージが表示されます。
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
...これは(私が正しく理解した場合)、「@project.id」または「current_user.id」のいずれかがnilであることを意味します。この場合、nilであるのは@ project.idであり、実際にはヘルパーに渡されていないことを確信しています。
私が正しい場合、どうすればそれをヘルパーに渡すことができますか?私が正しくない場合、問題は何ですか?
景色:
1. <% @projects.each do |project| %>
2. <div class="project_container">
3. <% if check_if_member %>
4. <% if project.user_id == current_user.id %>
5. <div class="users_project label label-success">
6. Owner
7. </div>
8. <% else %>
9. <div class="not_users_project label label-info">
10. Member
11. </div>
12. <% end %>
13. <div class="project_name_div">
14. <%= link_to (project.title), project_path(project) %><br />
15. </div>
16. <% else %>
17. <div class="project_name_div">
18. project.title <br />
19. </div>
20. <% end %>
21. </div>
22. <% end %>
ヘルパー:
module ProjectsHelper
def check_if_member
if ProjectsUser.where("project_id = ? AND user_id = ?", @project.id, current_user.id)
return true
else
return false
end
end
end