2012-01-30 47 views
1

我正面臨以下問題。如何重定向用戶定義的類的輸出以在rails中查看

我在軌道上做了一個樸素的貝葉斯性別預測算法。爲此我已經編碼並將我的代碼文件放在根目錄中。我能夠訪問我的模型控制器中的類,並通過適當的類調用來運行代碼。

我有一個三個字段「體重,身高和性別」的表格,當我填寫所有這三個,他們應該被保存在分貝。我寫了它的邏輯,它運作良好。如果我忽略性別字段,它應該運行我的代碼並呈現適當的視圖。

在控制器的創建操作我做了以下內容:

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語句)重定向到視圖以及在哪裏創建它。我的代碼返回「男性」或「女性」作爲輸出。我應該將它存儲在一些變量中嗎?我應該怎麼做呢?

這是我的項目中剩下的最後一件事。在嘗試了很多方法之後,我已經談到了這一點,但現在我陷入了僵局。

問候, 阿倫

回答

0

你可以額外的布爾屬性添加到您的被叫用戶對象gender_predicted「這顯示了用戶的性別設定是否預測或指定:

@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