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 如何实施';搜索功能';适用于邮箱';每个盒子都是什么_Ruby On Rails_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails 如何实施';搜索功能';适用于邮箱';每个盒子都是什么

Ruby on rails 如何实施';搜索功能';适用于邮箱';每个盒子都是什么,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,现在我正在使用一个名为“mailboxer”的gem作为消息传递系统。 我想为收件箱、sentbox和垃圾箱实现“关键字搜索功能” 如果我不关心搜索关键字,那么通过这样的编码就可以毫无问题地获取结果 inbox... @messages = current_user.mailbox.inbox.page(params[:page]).per(10) sentbox... @messages = current_user.mailbox.sentbox.page(params[:page]).

现在我正在使用一个名为“mailboxer”的gem作为消息传递系统。
我想为收件箱、sentbox和垃圾箱实现“关键字搜索功能”

如果我不关心搜索关键字,那么通过这样的编码就可以毫无问题地获取结果

inbox...   @messages = current_user.mailbox.inbox.page(params[:page]).per(10)
sentbox... @messages = current_user.mailbox.sentbox.page(params[:page]).per(10)    
trash...   @messages = current_user.mailbox.trash.page(params[:page]).per(10)
但有时我想用搜索关键字过滤结果。
假设这次搜索关键字为“test”,则结果应仅为通知表中正文属性中包含“test”的记录。
我怎样才能做到这一点,如收件箱,sentbox和垃圾箱

我试过了,但根本没用:(


解决方案是对Mailboxer::Receive和Mailboxer::Models::Messageable模块进行修补,以支持按框类型进行搜索:

class Mailboxer::Receipt < ActiveRecord::Base
  ...
  if Mailboxer.search_enabled
    searchable do
      text :subject, :boost => 5 do
        message.subject if message
      end
      text :body do
        message.body if message
      end
      integer :receiver_id

      # Add mailbox_type to sunspot search field
      string  :mailbox_type
      boolean :trashed
      boolean :deleted
    end
  end
end
这样,在控制器中,您就可以简单地使用新定义的方法来执行框类型搜索

current_user.search_inbox_messages(query[:keywords])
current_user.search_sentbox_messages(query[:keywords])
current_user.search_trash_messages(query[:keywords])
重要提示:请确保在添加新搜索字段后重新生成Solr索引,否则不会显示任何内容:

bundle exec rake sunspot:solr:reindex

希望这有帮助!

解决方案是对Mailboxer::Receive和Mailboxer::Models::Messageable模块进行修补,以启用按框类型搜索:

class Mailboxer::Receipt < ActiveRecord::Base
  ...
  if Mailboxer.search_enabled
    searchable do
      text :subject, :boost => 5 do
        message.subject if message
      end
      text :body do
        message.body if message
      end
      integer :receiver_id

      # Add mailbox_type to sunspot search field
      string  :mailbox_type
      boolean :trashed
      boolean :deleted
    end
  end
end
这样,在控制器中,您就可以简单地使用新定义的方法来执行框类型搜索

current_user.search_inbox_messages(query[:keywords])
current_user.search_sentbox_messages(query[:keywords])
current_user.search_trash_messages(query[:keywords])
重要提示:请确保在添加新搜索字段后重新生成Solr索引,否则不会显示任何内容:

bundle exec rake sunspot:solr:reindex

希望这有帮助!

如果是,请让我知道您是否实现了搜索功能,因为我必须实现相同的功能。我遵循了github,但它不起作用……如果是,请让我知道您是否实现了搜索功能,因为我必须实现相同的功能。我遵循了github,但它不起作用不起作用。。。。