Olá pessoal boa noite.
Estou começando o desenvolvimento com Rails. Estou sem entender uma coisa, acho que a solução é simples mais ainda não encontrei resposta.
Estou tentando desenvolver uma aplicação simples, uma calculadora. Logicamente não vou precisar armazenar nada em banco. Então fiz o meu modelo da seguinte forma:
class Calculo
include ActiveModel::Model
attr_accessor :operando1, :operando2, :operacao
validates_numericality_of :operando1, :operando2
def tipo
@operando1.class
end
end
No controller fiz seguinte:
class CalculosController < ApplicationController
def form
@calculo = Calculo.new
end
def calcular
@calculo = Calculo.new(params[:calculo])
@tipo = @calculo.tipo
render 'form'
end
end
E na view:
<h1>Calculadora</h1>
<% @calculo.errors.each do |campo, erro| %>
<%= "#{campo} - #{erro}" %>
<% end %>
<%= form_for(Calculo.new, url: {action: 'calcular'}) do |f| %>
<%= f.label :operando1 %><br>
<%= f.number_field :operando1 %><br>
<%= f.label :operando2 %><br>
<%= f.number_field :operando2 %><br>
<%= f.label :operacao %> <br/>
<%= f.select(:operacao, options_for_select([['Soma', '+'], ['Subtração', '-'], ['Multiplicação', '*'], ['Divisão', '/']])) %> <br/><br>
<%= f.submit("Ok")%>
<% end %>
<% if !@tipo.nil? %>
Resultado: <%=@tipo%>
<% end %>
Veja que no modelo tenho um método ‘tipo’ que retorna a classe do atributo @operando1. Esse ‘tipo’ é mostrado na visão quando o usuário envia o formulário no botão ok. O problema é que o tipo do operando sempre sai como String. O framework não deveria fazer a conversão para um tipo Number, já que eu estou utilizando o campo number_field?
Aguardo uma respota.