Rails 4部分渲染对象为nil

时间:2016-05-03 17:56:01

标签: ruby-on-rails

我一直在阅读http://guides.rubyonrails.org/layouts_and_rendering.html#using-render并尝试了所有不同的部分选项,但无济于事。

我与trouble_tickets控制器进行了Client操作,就像这样(简化):

def trouble_tickets
  @query = Client.get_job_count
  respond_to do |format|
      format.html
  end
end

get_job_count在我的Client模型中定义:

def self.get_job_count
  find_by_sql("my sql query here that returns some data");  
end

app/views/pages我有一个dashboard.html.erb文件执行以下操作:

<%= render partial: "clients/trouble_tickets", object: @query %>

然后在_trouble_tickets.html.erbapp/views/clients内)我有:

<% @query.each do |item| %>
   <tr>
     <td><%= item.attributes['Job Code'] %></td>
     <td><%= item.attributes['Percentage'].round(2) %>%</td>    
   </tr>
<% end %>

加载/dashboard时,收到错误消息:

undefined method各&#39;为零:NilClass`

为什么会这样?我没有正确使用部分渲染中的object属性吗?

注意:我在@query的普通视图中尝试了此trouble_tickets.html.erb次迭代,可以很好地查看数据。

任何输入都表示赞赏。

1 个答案:

答案 0 :(得分:2)

部分:

<%= render partial: "clients/trouble_tickets", locals: {query_objects: @query} %>

循环:

<% query_objects.each do |item| %>
   <tr>
     <td><%= item.attributes['Job Code'] %></td>
     <td><%= item.attributes['Percentage'].round(2) %>%</td>    
   </tr>
<% end %>