控制器中的空数组...但在Rails控制台中有效

时间:2016-01-27 22:19:43

标签: ruby-on-rails ruby-on-rails-4 model console

我感到困惑......

我有一个名为Distributor的模型,当我在控制台中执行Distributor.all时,我得到了所有记录的数组(根据此查询,目前有657条记录)。

但是,我创建了一个控制器操作,以在索引视图中显示此分发器。从同一个查询Distributor.all

返回一个空数组
  • 我重新启动了服务器
  • 我检查过拼写错误(字面上复制并粘贴了Distributor.all从控制器到 控制台,以确保它在控制台中工作)
  • 我已经使用binding.pry进行调试,没有出现任何问题
  • 我检查了日志,没有出现任何错误
  • 我已经检查了日志与控制台,并且正在运行相同的SQL查询。分销商负载(10.9ms)SELECT"分销商"。* FROM"分销商"对于两者,但返回不同的结果
  • 生成CSV或HTML不是问题因为加载都没有错误

有什么建议吗?

经销商型号:

class Distributor < ActiveRecord::Base

belongs_to :brand

def self.to_csv
    attributes = %w{distributor_id mfg_brand_id company_name address_one address_two city state postcode country address_type primary_address users_count created_at}
    CSV.generate(headers: true) do |csv|
        csv << attributes

        all.each do |d|
            csv << d.attributes.values_at(*attributes)
        end
    end
  end   
end 

经销商控制器

class DistributorsController < ApplicationController
before_action :authenticate_user!

def index
    @user = current_user
    if @user.admin?
      @distributors = Distributor.all

      respond_to do |format|
        format.html
        format.csv { send_data @distributors.to_csv }
      end

    else
     flash["danger"] = "You must be a logged in Admin to  access this route"
     redirect_to root_path
    end
  end   
end

经销商index.html.erb

<h1>Distributors#index</h1>
<p>Find me in app/views/distributors/index.html.erb</p>


<%= @distributors.each do |d| %>
    <%= d %>
<% end %>

3 个答案:

答案 0 :(得分:0)

在您的控制器中,如果您将@distributors = RheemruudDistributor.all替换为@distributors = Distributor.all,它应该有效,对吗?或者我错过了什么?

答案 1 :(得分:0)

终于想通了......我认为这很简单。

这是一个使用公寓宝石的多租户应用程序,我不得不将这个新创建的模型放在apartment.rb初始化程序的排除模型部分。

想想,如果有其他人处于这种情况,我会留下这个。

答案 2 :(得分:0)

使用

<% @distributors.each do |d| %>
    <%= d %>
<% end %>

而不是

<%= @distributors.each do |d| %>
    <%= d %>
<% end %>
你的观点