前提
Rails初心者です。
Railsで基礎代謝を計算しようとしています。
実現したいこと
身長(:height1)体重(:weight1)年齢(:age1)を入力⇨
数値を元にmodel内で計算⇨
viewに表示
発生している問題・エラーメッセージ
エラー内容を確認し調べてみると、数字と文字は計算できないのような事でした。
しかし私は、データ型も[integer]で作成したので、一体どこで文字として認識しているのかわかりません。
見づらいコードで申し訳ございませんが、宜しくお願い致します。
TypeError in Kcals#new
Showing /home/ec2-user/environment/recodiet/app/views/kcals/new.html.erb where line #28 raised:
:weight1 can't be coerced into Float
Extracted source (around line #14):
12 13 def bmr1_keisan 14 (13.397 * :weight1 + 4.799 * 1 - 5.677 * 1 + 88.362) 15 end 16 end
試したこと
to_i
kcal.rb
class Kcal < ApplicationRecord validates :weight1, presence: true validates :height1, presence: true validates :age1, presence: true def bmr1_keisan (13.397 * :weight1 + 4.799 * 1 - 5.677 * 1 + 88.362) end end
###kcals_controller.rb
class KcalsController < ApplicationController def index @kcal = Kcal.all end def new @kcal = Kcal.new end def create @kcal =Kcal.new(kcal_params) if @kcal.save puts '保存に成功しました' else puts '保存に失敗しました' end #redirect_to end def show @kcal = Kcal.find(params[:id]) @weight1 = @kcal[:weight1] @height1 = @kcal[:height1] @age1 = @kcal[:age1] #@bmr1 = @kcal.bmr1_keisan #@tdee1 = @bmr1*1.3 end private def kcal_params params.require(:kcal).permit(:weight1,:height1,:age1) end end
###new.html.erb
<%=link_to 'マイページ', mypage_show_path, class: 'btn btn-default btn-black' %> <%=link_to 'グラフ', graff_show_path, class: 'btn btn-default btn-black' %> <%= link_to 'カレンダー',meetings_path, class: 'btn btn-default btn-black' %> <%= form_for :kcal,url: kcals_path do |f| %> <p> <%= f.label :体重 %><br> <%= f.number_field :weight1 %> </p> <p><%= f.label :身長 %><br> <%= f.number_field :height1 %> </p> <p><%= f.label :年齢 %><br> <%= f.number_field :age1 %> </p> <p> <%= f.submit :計算 %> </p> <% end %> <p> 結果 </p> <%= @kcal.bmr1_keisan %>
schema.rb
create_table "kcals", force: :cascade do |t| t.integer "weight1" t.integer "height1" t.integer "age1" t.integer "bmr1" t.integer "tdee1" t.datetime "created_at", null: false t.datetime "updated_at", null: false end
補足情報(FW/ツールのバージョンなど)
Rails
Ruby
回答2件
あなたの回答
tips
プレビュー