初学者です。入力画面で、相手への評価ポイントを入れて、今までのポイントと合わせて平均を求めるところで、
undefined method `to_i' for <ActionController::Parameters {"point"=>"5"} permitted: true>:ActionController::Parameters Did you mean? to_h to_s
というエラーが出ています。
どう直したらいいのか分かりません。すいませんが、お知恵を貸してください。
html
1<%= form_tag("/posts/#{@post.id}/finishedafter",method: :post) do %> 2 <p>タイトル</p> 3 <h3><%=@post.title%></h3> 4 <p>取引相手</p> 5 <h3><%=@post.postedname%></h3> 6 <p>評価0~5(最高は5です)</p> 7 <div class="select"> 8 <select name="point" id="point" required > 9 <option selected value= "" >選択してください</option> 10 <option value= "0" >0</option> 11 <option value= "1" >1</option> 12 <option value= "2" >2</option> 13 <option value= "3" >3</option> 14 <option value= "4" >4</option> 15 <option value= "5" >5</option> 16 </select> 17 </div> 18 <div class="new-btn"> 19 <label><input class="btn btn-danger btn-lg " type="submit" value="取引を完了する"></label> 20 </div> 21 <% end %>
という形で送り。
ruby
1 2post.controller 3 4def finishedafter 5 newpoint = params.permit(:point) 6 @post = Post.find_by(id:params[:id]) <=相手の投稿 7 @user = User.find_by(id:@post.user_id) <=相手のデータ 8 9 @user.finishcount += 1 <=平均を求めるための件数 10 @user.point.to_f = (@user.point + newpoint.to_i) / @user.finishcount 11 (相手の評価ポイント = 相手のポイント + 今回のポイント / 件数) 12 @user.save 13 redirect_to("/") 14 end
db
1 2create_table "users", force: :cascade do |t| 3 t.string "user_name" 4 t.string "password_digest" 5 t.string "email" 6 t.datetime "created_at", null: false 7 t.datetime "updated_at", null: false 8 t.string "imagename" 9 t.integer "point" 10 t.boolean "admin", default: false 11 t.integer "finishcount" 12 end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/27 12:38
2019/12/27 13:20
2019/12/27 14:07
2019/12/30 07:13
2019/12/30 12:59
2019/12/30 14:49
2019/12/30 15:07
2019/12/30 22:12
2019/12/31 05:14
2019/12/31 05:37
2019/12/31 11:07
2019/12/31 11:54
2020/01/01 04:28
2020/01/02 09:13