Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.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 太阳黑子/太阳轨道过滤器_Ruby On Rails_Solr_Controller - Fatal编程技术网

Ruby on rails 太阳黑子/太阳轨道过滤器

Ruby on rails 太阳黑子/太阳轨道过滤器,ruby-on-rails,solr,controller,Ruby On Rails,Solr,Controller,已更新 我正在使用sunspot/solr在Rails 3.2应用程序中搜索和过滤数据。这是我在“齿轮”模型上执行的两个solr搜索中的第二个 我的第一次搜索根据查询和应用的面显示视图中的所有齿轮(齿轮属于用户,用户有许多齿轮) 现在我可能想得不对了(因为我有一段时间没看这个了) 基本上,我现在正在构建一个新的搜索,但这也是在“Gear”模型上,但它位于不同的控制器、不同的视图中,我尝试只搜索/过滤/刻面用户gears的结果,但我正在获取数据库中的所有gears 正在获取以下错误 为nil调用i

已更新

我正在使用sunspot/solr在Rails 3.2应用程序中搜索和过滤数据。这是我在“齿轮”模型上执行的两个solr搜索中的第二个

我的第一次搜索根据查询和应用的面显示视图中的所有齿轮(齿轮属于用户,用户有许多齿轮)

现在我可能想得不对了(因为我有一段时间没看这个了)

基本上,我现在正在构建一个新的搜索,但这也是在“Gear”模型上,但它位于不同的控制器、不同的视图中,我尝试只搜索/过滤/刻面用户gears的结果,但我正在获取数据库中的所有gears

正在获取以下错误

为nil调用id,它会错误地为4——如果您确实想要nil的id,请使用object\u id

我错过了什么

在控制器中显示操作

   def show
     @store = Store.find(params[:id])
     @user = @store.user
     @search2 = Gear.solr_search do
          fulltext params[:search]        
          facet (:category_name)
          facet(:sub_category_name)
          facet (:state)
          facet (:city)
          facet (:price)
          with(:user_id, @user.id)
          with(:price, params[:price]) if params[:price].present?
          with(:state, params[:state]) if params[:state].present?
          with(:city, params[:city]) if params[:city].present?
          with(:sub_category_name, params[:name]) if params[:name].present?
          with(:category_name, params[:categoryname]) if params[:categoryname].present?
          paginate(page: params[:page], :per_page => 15)
     end

     @gears = @search2.results
  end
在尝试太阳黑子之前,我正在做@gears=@store.user.gears.paginate(page:params[:page])

齿轮型号

class Gear < ActiveRecord::Base
  attr_accessible :title, :size, :price, :sub_category_id, :user_id, :image, :image_a, :image_b, :image_c, :image_d, :image_e, :image_f, :image_g, :image_h, :image_i, :remote_image_url, :color, :year, :latefee, :cancellation, :minrental, :policy, :about, :address, :city, :state, :zip, :country, :latitude, :longitude, :gmaps
  belongs_to :user
  belongs_to :sub_category

  searchable do
     text :title, :size, :price, :year, :zip, :state, :city, :minrental, :about, :latefee, :color

     text :user_firstname do
          user.firstname
     end

     text :user_lastname do
          user.lastname
     end
     # **Facet Section**   

     string :size 
     string :price
     string :state
     string :city

     string :sub_category_name , :multiple => true, :stored => true do
       sub_category.name
     end

     string :category_name, :multiple => true, :stored => true do
       category.name
     end
   end
end
class Store < ActiveRecord::Base
  attr_accessible :storeimage, :storename
  belongs_to :user
  mount_uploader :storeimage, StoreUploader
end
class User < ActiveRecord::Base 

  attr_accessible :email, :password, :password_confirmation, :remember_me, :firstname, :lastname, :userimage, :remove_userimage, :name
  has_many :gears
  has_many :comments, :dependent => :destroy 
  has_one :store, :dependent => :destroy
  require 'carrierwave/orm/activerecord'
  mount_uploader :userimage, UserpicUploader
  accepts_nested_attributes_for :store


end
class Geartrue,:stored=>true do
子类别名称
结束
字符串:category_name,:multiple=>true,:stored=>true do
category.name
结束
结束
结束
商店模式

class Gear < ActiveRecord::Base
  attr_accessible :title, :size, :price, :sub_category_id, :user_id, :image, :image_a, :image_b, :image_c, :image_d, :image_e, :image_f, :image_g, :image_h, :image_i, :remote_image_url, :color, :year, :latefee, :cancellation, :minrental, :policy, :about, :address, :city, :state, :zip, :country, :latitude, :longitude, :gmaps
  belongs_to :user
  belongs_to :sub_category

  searchable do
     text :title, :size, :price, :year, :zip, :state, :city, :minrental, :about, :latefee, :color

     text :user_firstname do
          user.firstname
     end

     text :user_lastname do
          user.lastname
     end
     # **Facet Section**   

     string :size 
     string :price
     string :state
     string :city

     string :sub_category_name , :multiple => true, :stored => true do
       sub_category.name
     end

     string :category_name, :multiple => true, :stored => true do
       category.name
     end
   end
end
class Store < ActiveRecord::Base
  attr_accessible :storeimage, :storename
  belongs_to :user
  mount_uploader :storeimage, StoreUploader
end
class User < ActiveRecord::Base 

  attr_accessible :email, :password, :password_confirmation, :remember_me, :firstname, :lastname, :userimage, :remove_userimage, :name
  has_many :gears
  has_many :comments, :dependent => :destroy 
  has_one :store, :dependent => :destroy
  require 'carrierwave/orm/activerecord'
  mount_uploader :userimage, UserpicUploader
  accepts_nested_attributes_for :store


end
类存储
用户模型

class Gear < ActiveRecord::Base
  attr_accessible :title, :size, :price, :sub_category_id, :user_id, :image, :image_a, :image_b, :image_c, :image_d, :image_e, :image_f, :image_g, :image_h, :image_i, :remote_image_url, :color, :year, :latefee, :cancellation, :minrental, :policy, :about, :address, :city, :state, :zip, :country, :latitude, :longitude, :gmaps
  belongs_to :user
  belongs_to :sub_category

  searchable do
     text :title, :size, :price, :year, :zip, :state, :city, :minrental, :about, :latefee, :color

     text :user_firstname do
          user.firstname
     end

     text :user_lastname do
          user.lastname
     end
     # **Facet Section**   

     string :size 
     string :price
     string :state
     string :city

     string :sub_category_name , :multiple => true, :stored => true do
       sub_category.name
     end

     string :category_name, :multiple => true, :stored => true do
       category.name
     end
   end
end
class Store < ActiveRecord::Base
  attr_accessible :storeimage, :storename
  belongs_to :user
  mount_uploader :storeimage, StoreUploader
end
class User < ActiveRecord::Base 

  attr_accessible :email, :password, :password_confirmation, :remember_me, :firstname, :lastname, :userimage, :remove_userimage, :name
  has_many :gears
  has_many :comments, :dependent => :destroy 
  has_one :store, :dependent => :destroy
  require 'carrierwave/orm/activerecord'
  mount_uploader :userimage, UserpicUploader
  accepts_nested_attributes_for :store


end
class用户:销毁
has_one:store,:dependent=>:destroy
需要“carrierwave/orm/activerecord”
mount_上传器:userimage,UserpicUploader
接受:存储的\u嵌套\u属性\u
结束

已更新

感谢您发布模型代码。请检查这是否适用于您。注意
user=@store。控制器操作中的user
分配使用本地
user
变量,而不是实例变量
@user
。在将
:user_id
添加到可搜索字段后,不要忘记重新为模型编制索引

class Gear < ActiveRecord::Base
  searchable do
    integer :user_id
  end
end

# now the controller action
def show
  @store = Store.find(params[:id])
  user = @store.user

  @search2 = Gear.solr_search do
    with(:user_id, user.id)
    # all other search code omitted for brevity
  end
end
class Gear
我得到以下错误:未定义的方法“user”用于#哦,对不起,在您的示例中,它应该是
@store.user
。我更新了答案。我现在更新了它,抛出了一个不同的错误:nil:NilClassHmm的未定义方法'user',可能它在
Sunspot.search
的实现中的某个地方使用了
@store
,因此它是在Sunspot实例的上下文中进行计算的,而不是控制器操作。尝试以下操作:将
user=@store.user
放在
@store=…
之后的下一行,并将
与(:user\u id,user.id)
一起添加到搜索条件中(不带@before user)。