如何将用户定义类的输出重定向到rails中查看

我面临以下问题。

我在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语句)重定向到一个视图以及在哪里创建它。 我的代码返回“male”或“female”作为输出。 我应该将它存储在某个变量中吗? 我应该怎么做呢?

这是我项目中剩下的最后一件事。 在尝试了很多方法后,我已经解决了这个问题,但现在我陷入了僵局。

此致,阿伦

您可以向名为“gender_predicted”的用户对象添加一个额外的布尔属性,该属性将指示是否预测或指定了用户的性别集:

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

这将允许您存储您的预测,只需运行一次。 然后,您可以以相同的方式处理所有用户,但仍允许您跟踪预测的使用位置。

 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