将值从视图传递给助手
Posted
技术标签:
【中文标题】将值从视图传递给助手【英文标题】:Passing value from view to helper 【发布时间】:2013-02-12 00:28:38 【问题描述】:我有以下表格:
projects
users
projects_users <- relational table
在视图中,我循环浏览所有项目,并根据用户与它的关系(所有者、成员,而不是成员)使用不同的类(以及链接或未链接)将它们一一呈现.
这很好用,除了第 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 的 @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
【问题讨论】:
"Called id for nil.." 是在调用@variable.id 且@variable 为nil 时生成的。这与调用 variable.id 而未定义变量时不同。 【参考方案1】:显式传递
def check_if_member project, user
ProjectsUser.where("project_id = ? AND user_id = ?", project.id, user.id).count > 0
end
然后
<% if check_if_member(project, current_user) %>
【讨论】:
以上是关于将值从视图传递给助手的主要内容,如果未能解决你的问题,请参考以下文章
如何将值从 NSTabViewController 传递给子视图?
如何将值从 javascript 函数传递到 django 视图