次のエラーが発生します...
pry("serp")> session[self.to_sym] = "closed"
NameError: undefined local variable or method `session' for "serp":String
...Stringクラスのモンキーパッチ内からセッション変数を設定しようとしたとき。(準備ができたときにのみ検索結果をロードするために、遅延ジョブのジョブの進行状況を追跡できるようにするために必要です。)
そこでセッション変数を設定するにはどうすればよいですか?または、より良い解決策はありますか?
私のコード...
/config/initializers/string.rb:
class String
def multisearch
result = PgSearch.multisearch(self)
session[self.to_sym] = "closed"
return result
end
end
/app/views/searches/show.html.haml:
- if @term.present? && session[@term.to_sym] == "open"
%h1 Search In Progress
# then show spinning wheel animation etc
- else
%h1 Search Results
= form_tag search_path, :method => :get do
= text_field_tag "term", "Search term"
= submit_tag "Search"
- unless @results.blank?
# then show the search results etc
** / app / views / layouts / application.html.haml:
!!!
%html
%head
- if @term.present? && session[@term.to_sym] == "open"
%meta{:content => "5", "http-equiv" => "refresh"}/
/app/controllers/searches_controller.rb:
class SearchesController < ApplicationController
respond_to :html
filter_access_to :all
def show
if @term = params[:term]
session[@term.to_sym] = "open"
@results = @term.delay.multisearch
# other stuff...
end
end
end