首页 > 解决方案 > 未定义的局部变量或方法“nominations_data”

问题描述

目前无法使用部分将信息从周期控制器传递到 cycle_nominees_table.html.erb。

数据在我的控制器显示方法中定义。show 方法在@nominations_data 和@nominations_team_data 中有信息。

为什么我的 _cycles_nominations_table.html.erb 不能访问被传递到部分的提名数据?

我一直在使用此链接进行指导。

下面的代码:

应用程序/控制器/cycles_controller.rb

 def show
...

    @nominations_data = {}
    @nominations.each do |nomination|
      @nominations_data[nomination.for_user_id] ||= {}
      @nominations_data[nomination.for_user_id][:nominee] ||= nomination.for_user
      if user_is_admin
        @nominations_data[nomination.for_user_id][:nominations] ||= []
        @nominations_data[nomination.for_user_id][:nominations].push nomination
      end
      if user_is_admin_or_reviewer
        @nominations_data[nomination.for_user_id][:count] ||= 0
        @nominations_data[nomination.for_user_id][:count] += 1
      end
    end
    @nominations_data = @nominations_data.sort_by { |_nid, nomination| nomination[:nominee].name }

    @nominations_team_data = {}
    @team_nominations.each do |nomination|
      @nominations_team_data[nomination.for_user_id] ||= {}
      @nominations_team_data[nomination.for_user_id][:nominee] ||= nomination.for_user
      if user_is_admin
        @nominations_team_data[nomination.for_user_id][:nominations] ||= []
        @nominations_team_data[nomination.for_user_id][:nominations].push nomination
      end
      if user_is_admin_or_reviewer
        @nominations_team_data[nomination.for_user_id][:count] ||= 0
        @nominations_team_data[nomination.for_user_id][:count] += 1
      end
    end
    @nominations_team_data = @nominations_team_data.sort_by { |_nid, nomination| nomination[:nominee].name }

end

app/views/cycles/show.html.erb

          <div class="container-float-right-small" id="cycle-nominees-section">
            <h2 class="inline">Nominees for <%= @cycle.name %></h2>
            <h4 class="inline"> - (<%= @cycle.votes_per_reviewer %> votes allowed)</h4>
        <h5> Indivdual Nominees: </h5>
<!--        <%= render "cycles/cycle_nominees_table" %>-->
    <%= render partial: "cycles/cycle_nominees_table", locals: { nominations_data: @nominations_data } %>
        <h5> Team Nominees: </h5>
<!--        <%= render "cycles/cycle_nominees_table" %>-->
        <%= render partial: "cycles/cycle_nominees_table", locals: { nominations_data: @nominations_team_data } %>
          </div>

app/views/cycles/_cycle_nominees_table.html.erb

  <% if nominations_data.empty? %>
      <th class="center" colspan="4"><h3>There are no nominees <%= "for cycle '#{@cycle.name}'" if @cycle %></th>
    <% end %>
  </thead>

  <tbody>
    <% nominations_data.each do |nid, data| %>
      <tr id='<%= "nominee-row-#{nid}" %>' class="nominee-row">
        <% if user_is_reviewer && @cycle.voting_open %>
          <td class="center">
            <% nomination_icon_class = "voted_for" if Vote.where(cycle_id: @cycle.id, by_user_id: current_user.id, for_user_id: data[:nominee].id).count > 0 %>
            <span class="glyphicon glyphicon-check pointer <%= nomination_icon_class %>" id=<%= "vote_for_nominee_#{nid}" %> onclick="<%= "Vote.send_vote_data(this, #{data[:nominee].id}, #{@cycle.id})" %>"></span>
          </td>
        <% end %>

标签: ruby-on-rails

解决方案


推荐阅读