2012-01-30 13 views
1

私は次の問題に直面しています。ユーザー定義クラスの出力をレールで表示する方法

私はナイーブなベイズの性別予測アルゴリズムを、レールで作っています。そのために私はそれをコード化し、私のコードファイルをルートディレクトリに入れました。私はモデルコントローラのクラスにアクセスし、適切なクラスの呼び出しによってコードを実行することができます。

私は3つのフィールド "体重、身長、性別"を持っていますが、これらの3つのフィールドをすべて埋めると、DBに保存されます。私はその論理を書いており、うまくいきます。ジェンダーフィールドをそのまま残す場合は、コードを実行して適切なビューをレンダリングする必要があります。コントローラのcreateアクションで

私は次のことをやっている:

def create 
    @user = User.new(params[:user]) 
    if @user.gender.blank? 
     @b_obj= Bayes.new 
     @b_obj.predict(@user[height], @user[weight]). 
    else 
     if @user.save 
     redirect_to @user 
     else 
     @title = "Train" 
     render 'new' 
     end 
    end 
    end 

このコードはうまく動作します。今、私は問題に直面しています。私のコードの結果(最初のif文)をビューにリダイレクトする方法と、それをどこに作成するのか。私のコードは "男性"または "女性"を出力として返します。私はいくつかの変数に格納する必要がありますか?それについてどうすればいいですか?

これは私のプロジェクトに残された最後のものです。多くのアプローチを試した後、私はこれに来ましたが、今はまあまあです。あなたはユーザーのためのジェンダーセットが予測されるか、指定されたかどうかを示すだろう「gender_predicted」と呼ばれるユーザーオブジェクトに余分なブール属性を追加することができ

よろしく、 アルン

答えて

0

@user.gender = @b_obj.predict(@user[height], @user[weight]) 
@user.gender_predicted = true 

それは予測を保存し、一度だけ実行する必要があります。その後、すべてのユーザーを同じ方法で扱うことができますが、予測がどこで使用されたかを追跡できます。

0
def create 
    @user = User.new(params[:user]) 
    @user.gender ||= Bayes.new.predict(@user[height], @user[weight]) 
    if @user.save 
     flash[:notice] = 'User saved' 
     redirect_to @user 
    else 
     @title = "Train" 
     render 'new' 
    end 
end 
関連する問題