0

アプリケーション ヘルパーを使用して動的なナビゲーション メニューをレンダリングしようとしていますが、すべての 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) %>
4

2 に答える 2

2

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
于 2012-07-09T12:55:10.000 に答える
0

列挙可能な #each は、プロジェクト リスト メソッドの戻り値となるコレクション内の最後のオブジェクトを返しています。

タグのリストを作成してから、そのオブジェクトを返す必要があります。

1.9.2 を使用している場合は、each_with_object をオブジェクトのような文字列または返す前に結合できる配列のいずれかで使用できます。

于 2012-07-09T12:50:00.183 に答える