我面临以下问题。
我在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”作为输出。我应该将它存储在某个变量中吗?我应该怎么做呢?
这是我项目中剩下的最后一件事。在尝试了很多方法后,我已经解决了这个问题,但现在我陷入了僵局。
此致 阿伦
答案 0 :(得分:0)
您可以为名为“gender_predicted”的用户对象添加一个额外的布尔属性,该属性将指示是否预测或指定了用户的性别集:
@user.gender = @b_obj.predict(@user[height], @user[weight])
@user.gender_predicted = true
这将允许您存储您的预测,只需运行一次。然后,您可以以相同的方式处理所有用户,但仍允许您跟踪预测的使用位置。
答案 1 :(得分: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