我尝试使用应用程序助手渲染动态导航菜单,但所有get都是哈希
当我加载页面时,这就是它显示的全部内容
[#<Project id: 15, title: "downer", created_at: "2012-07-03 08:36:16", updated_at: "2012-07-03 08:36:16", company_id: 2>]
这是应用程序助手
中使用的代码def project_list(user)
company ||= user.profile.company
projects ||= company.projects
projects.each do |project|
link_to project.title, company_project_path(company, project)
project.scopes.each do |scope|
link_to scope.name, company_project_scope_path(scope.company, scope.project, scope)
end
end
end
和
_nav.erb.html
<%= project_list(current_user) %>
答案 0 :(得分:1)
在ruby中,默认情况下,方法返回最后一次计算的表达式。此外,each
返回迭代的数组/哈希。因此,project_list
有效地将projects
返回到视图中。您应该更改方法以返回要插入的html:
def project_list(user)
html = ''
company ||= user.profile.company
projects ||= company.projects
projects.each do |project|
html += link_to project.title, company_project_path(company, project)
project.scopes.each do |scope|
html+= link_to(scope.name, company_project_scope_path(scope.company, scope.project, scope))
end
end
return html.html_safe
end
答案 1 :(得分:0)
您的可枚举#each将返回集合中的最后一个对象,该对象将成为项目列表方法的返回值。
您需要建立一个标签列表,然后返回该对象。
如果您使用的是1.9.2,则可以将each_with_object用作对象上的字符串,或者在返回之前使用可以加入的数组。