私は、CSVをインポートし、Sunspotを使用してそれを検索する単純なWebアプリに取り組んでいます。ユーザーが使用しているアクションは、インデックスと表示のみです。これらはすべて正常に機能していますが、最終的な目標は、検索対象を正確に追跡してエクスポートできるようにすることです。
私のdatasheets
モデルは、アップロードされるCSVのモデルです。この場合も、検索を含めて正常に機能しています。datasheets
とは両方ともdatalog
デフォルトでスキャフォールドとルーティングされます。これを最初に試みたのは、検索を使用してモデルDatasheetsController
の新しいインスタンスを作成する定義を自分に追加するだけだと思いました。datalog
datasheets_controller.rb(正常に動作しています)
def index
@search = Datasheet.search do
fulltext params[:search]
end
@datasheets = @search.results
respond_to do |format|
...
end
end
これが、新しいデータログを作成するための私の試みです。私はRailsを初めて使用し、これがRESTfulではないことを認識していますが、ここでは迅速で汚い解決策で大丈夫です。
class DatasheetsController < ApplicationController
after_filter :log_it
def log_it
@datalog = Datalog.new(params[:datalog])
end
end
これはdevelopment.logで何の役にも立たなかったので、paramsをに変更しようとし@datalog = Datalog.new(params[:search])
ましたが、次のエラーが発生しました。
NoMethodError in DatasheetsController#index
undefined method `stringify_keys` for "[whatever is searched for]":string
私はここから離れていると確信していますが、これは簡単に投入できると思いましたが、そうではありませんでした。それが役に立ったら、これが機能したら、作成されたdatalog
属性:name
を検索された文字列と同じにするようにします。正しい方向へのポイント(またはそれをうまくやらないためのスマック)は非常にありがたいです。
編集:検索結果をログに記録する簡単な方法がある場合(モデルに含まれている必要はありません)、何でも歓迎します(宝石を含む)。私はグーグルとSOで考えられる限り多くのキーワードのバリエーションを検索しましたが、何も見つかりませんでした。
編集2:
いくつか編集した後、近づきましたが、まだ問題があります。
私は以下を追加しましたdef index
:
@logkey = :search
log_it
定義を次のように変更しました。
def log_it
@datalog = Datalog.new(params[:id])
@datalog.update_attribute(:name, @logkey)
end
これで、新しいデータログは検索を節約します。これはすばらしいことですが、:name
属性は常に「検索」になります。
私が現在データログ用に持っているテーブルの例は次のとおりです。
名前
検索表示編集破棄
検索表示編集破棄
検索表示編集破棄
検索表示編集破棄
検索表示編集破棄
新しいデータログ
@logkey
行を次のように変更してみました@logkey = :search.to_s
が、実際には何も影響しません。
答えに応じて編集
SQL(0.5ms)INSERT INTO "datalogs"( "created_at"、 "name"、 "updated_at")VALUES(?、?、?、?)[["created_at"、Tue、26 Feb 2013 18:26:04 UTC +00:00]、["name"、nil]、["updated_at"、Tue、26 Feb 2013 18:26:04 UTC +00:00]]
繰り返しますが、これが他の場所での問題である場合、私はそれを取得し、自分の時間でそれを探すことができます。再度、感謝します!