2012-01-30 49 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