Как перенаправить вывод пользовательского класса для просмотра в рельсах - PullRequest
1 голос
/ 30 января 2012

Я столкнулся со следующей проблемой.

Я делаю наивный байесовский алгоритм гендерного прогнозирования в рельсах.Для этого я кодировал его и помещал свой файл кода в корневую директорию.Я могу получить доступ к классу в моем контроллере модели и запустить код путем соответствующего вызова класса.

У меня есть форма с тремя полями "вес, рост и пол", когда я заполняю все эти три, онидолжен быть сохранен в БД.Я написал его логику, и он работает хорошо.В случае, если я оставляю поле пола как есть, оно должно запустить мой код и отобразить соответствующее представление.

В действии контроллера создать, я делаю следующее:

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) в представление и где его сделать.Мой код возвращает «мужской» или «женский» в качестве вывода.Должен ли я хранить его в какой-то переменной?как мне это сделать?

Это последнее, что осталось в моем проекте.Перепробовав много подходов, я пришел к этому, но теперь я зашел в тупик.

С уважением, Арун

Ответы [ 2 ]

0 голосов
/ 30 января 2012
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
0 голосов
/ 30 января 2012

Вы можете добавить дополнительный логический атрибут к вашему пользовательскому объекту с именем 'половой_предшественник', который будет указывать, был ли гендерный набор для пользователя предсказан или был задан:

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

Это позволит вам сохранить прогноз и выполнить его только один раз. Тогда вы сможете одинаково относиться ко всем пользователям, но при этом сможете отслеживать, где использовались прогнозы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...