Kalkulator bmi

WItam.
W ramach podsumowania wiedzy na temat samego ruby piszę prooosty kalkulator bmi z wykorzystaniem bootstrapa:
mam takie pliki:

bmi.rb

require 'sinatra'

require ‘sinatra/reloader’

get ‘/’ do
erb :index
end
post ‘/calculate’ do
waga = params[“waga”].to_i
wzrost = params[“wzrost”].to_i
new_amount = waga/(wzrost*wzrost)

erb :calculate, locals: {new_amount: new_amount}
end

layout.erb
http://wklej.org/id/2976044/
index.erb
http://wklej.org/id/2976047/
calculate.erb
http://wklej.org/id/2976051/

Podczas wpisywania danych, gdy kalkulator oblicza bmi cały czas pisze “Twoje BMI wynosi 0 .”
Czy to wina samego “algorytmu” do BMI?

a jakis debug najprostszy robiles? Znaczy puts na params np tak gdzie masz POST i zczytujesz, i na kolejne zmienne? By wiedziec w ktorym miejscu masz blad? Latwiej ci duzo sprawdzic niz bysmy my zgadywali

No ja wykorzystałem do tego sinatre, mógłbyś uruchomić to u siebie i obczaić?

hmm chyba sie nie zrozumieliśmy. Chodziło mi o to być do swojego kodu dodał debug, czyli:

post '/calculate' do
  p params
  waga = params["waga"].to_i
  wzrost = params["wzrost"].to_i
  new_amount = waga/(wzrost*wzrost)

  p new_amount
  erb :calculate, locals: {new_amount: new_amount}
end

wtedy w konsoli jak odpalisz kod bedziesz mial output co sie znajduje w tych zmiennych i tak powoli znajdziesz problem

Przerob jakies kursy podstawowe bo masz bardzo podstawowe problemy. Bez dobrych podstaw ciezko ci bedzie cos zrobic.

ale ja chcę to wywołać w sinatrze na localhost… Wszystko działa tylko nie wywołuje algorytmu prostego, pisałem podobna apkę z oszczędnościami i jakoś działało…

Można to odpalić na tym localhoscie czy nie :confused:

Plz odp :confused:

Mała podpowiedź:

puts "86.2".to_i / "191".to_i ** 2
0
puts "86.2".to_f / "1.91".to_f ** 2
23.628738247306817

waga dzielona przez wzrost do potęgi 2?

@DominikIR chodzi o integery oraz floaty. Integery są to liczby bez przecinka i jeżeli zrobisz działanie 1/2 wyjdzie Ci zero (1/2 = 0), zawsze jest ucinana wartość po przecinku. Natomiast float’y są to liczby zawierające przecinek i jeżeli zrobisz działanie 1.0/2.0 wyjdzie Ci 0.5 :slight_smile:

1 Like