Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails BSON对象的未定义方法-RubyonRails_Ruby On Rails_Mongoid - Fatal编程技术网

Ruby on rails BSON对象的未定义方法-RubyonRails

Ruby on rails BSON对象的未定义方法-RubyonRails,ruby-on-rails,mongoid,Ruby On Rails,Mongoid,我在使用rails和mongoid时遇到了一个问题,我创建了一个在所有学校类上循环的rake任务,并找到3个最近的高级学校,将它们插入数组字段中。因此,我希望能够在视图上显示它们,但我有以下错误消息: undefined method `title' for BSON::ObjectId('573f11e808207e00030000a1'):BSON::ObjectId 以下是TAK: namespace :geocodeschool do desc "Show premium sch

我在使用rails和mongoid时遇到了一个问题,我创建了一个在所有学校类上循环的rake任务,并找到3个最近的高级学校,将它们插入数组字段中。因此,我希望能够在视图上显示它们,但我有以下错误消息:

undefined method `title' for BSON::ObjectId('573f11e808207e00030000a1'):BSON::ObjectId
以下是TAK:

namespace :geocodeschool do

  desc "Show premium school near non-premium school and update them"

  task :schgc => :environment do

      @schools = School.all

      def premium_school_aside(school)
        radius = 50
        @schools_a = School.near(school.coordinates.reverse, radius, units: :km)
        @schools_premium = @schools_a.premium_school.limit(3)
      end

      @schools.each do |school|
        premium_school_aside(school)
        puts "// -------------- //"
        puts "AUTO-ÉCOLE : #{school.title}"
        puts "// -------------- //"
        puts "les auto-écoles premiums près de #{school.title} : #{@schools_premium.count}"
        puts "-------"

        school.update(school_premium_asides: @schools_premium.map(&:id))

        puts "-------"

    end

  end

end
以下是视图:

  <% unless @school.is_subscribed? %>
    <% @schools_premium_aside.each do |spa| %>
      <p> <%= spa.title %> </p>
    <% end %>
  <% end %>
以下是模型:

  # field for premium schools
  field :school_premium_asides, type: Array
有人知道我如何访问数据以在视图上显示3所优质学校吗


谢谢大家!

在你的学校模式中,你有

字段:school\u premium\u asides,类型:Array

您只在该数组中存储高级学校id

school.update(school_premium_asides: @schools_premium.map(&:id))
但在查看页面上,您正试图从该数组中获取高级学校标题,而该数组并没有存储

  <% unless @school.is_subscribed? %>
    <% @schools_premium_aside.each do |spa| %>
      <p> <%= spa.title %> </p>
    <% end %>
  <% end %>

所以我不能用id访问学校属性?我怎样才能将班级学校存储在这个阵列上,而不仅仅是id?你还面临任何问题吗@AntoninMrchdwith:
@schools\u premium\u aside=School.where(id:{'$in'=>@School.School\u premium\u asides})。仅(:id,:title)
有效!非常感谢你!
  <% unless @school.is_subscribed? %>
    <% @schools_premium_aside.each do |spa| %>
      <p> <%= spa.title %> </p>
    <% end %>
  <% end %>
@schools_premium_aside = School.where(id: { '$in' => @school.school_premium_asides }).only(:id, :title)