当渲染模板轨道4时,阵列出现空

时间:2015-08-19 21:11:12

标签: arrays ruby-on-rails-4 render slim-lang

我有一个控制器,它只有一个宁静的动作索引。但是,在这个方法中有很多代码,所以我需要将其分解为另外两个方法 - devices_table和results_table,但我仍然需要只在索引页面上显示所有内容。所以,我在他们自己的视图中创建了两个表,并使用render template:来获取索引页面上的表。每个表方法都有一个数组,在我的视图中迭代。当我在table方法中声明数组变量时,我得到一个错误,说它是nil。我发现我需要将数组变量添加到我的索引方法中,以便它在索引视图中可用,因为从技术上讲,这是所有html被加载的地方。然而,即使阵列现在不是零,它也是空的。我已经尝试了我能想到的一切 - 在索引和表方法中声明变量,将局部变量和渲染模板一起传递,但我的数组仍然是空的。有任何想法吗?

这是我的代码:

控制器(部分):

def index
  @business = Business.find params[:id]
  @mongo_db = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'test')
  @migration_ids = []
  @devices = []
end

def devices_table
  @business.devices.each do |device|
    @mongo_db[:migration_resources].find(:location => /.*#{device.uuid}.*/).each do |resource|
      migration_location = resource["location"]
      start_marker = "/migrations/"
      end_marker = "/folders/"
      @migration_ids << migration_location[/#{start_marker}(.*?)#{end_marker}/m, 1]
    end
  end
end

索引视图(顺便说一句,这很苗条,不是常规的HTML):

#page-body
  .left-column
    .box
      = render template: 'admin/v3_migrations/devices_table'

Devices_table查看:

.col-md-12
  h4= "Devices (#{@business.devices.count})"
  .table-wrapper
    table.table.table-hover
      thead
        tr
          th.col-md-1 ID
          th.col-md-3 Name
          th.col-md-3 UUID
          th.col-md-2 Status
          th.col-md-3 Migration UUID
          th.col-md-1
      tbody
        - @business.devices.each do |device|
          tr
            td= device.id
            td= device.name
            td= device.uuid
            td= device.status
            - @migration_ids.each do |id|
              td= id
              td= link_to admin_v3_migration_path(mig_id: id)
                i.fa.fa-download

如果我改为像这样写我的控制器,我会在数组上得到一个nil类错误。

def index
  @business = Business.find params[:id]
end

def devices_table
  @business = Business.find params[:id]
  @mongo_db = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'test')
  @migration_ids = []

  @business.devices.each do |device|
    @mongo_db[:migration_resources].find(:location => /.*#{device.uuid}.*/).each do |resource|
      migration_location = resource["location"]
      start_marker = "/migrations/"
      end_marker = "/folders/"
      @migration_ids << migration_location[/#{start_marker}(.*?)#{end_marker}/m, 1]
    end
  end
end

当所有代码都在单索引方法中时,一切都很好,所以我知道它不是数据库问题。此外,除了我从@migration_ids数组中取回的数据之外,所有内容都显示在表中,因此我知道一切都正常呈现。我尝试了很多不同的小调整,但我不想发布所有代码变体。

0 个答案:

没有答案