idを特定の一つにしたい
解決したいこと
form withでidのデータ送信を行なっているが、こちらの送信idがdbから全部持ってきてしまっている、これを解決したい
発生している問題・エラー
画面上のエラー
activeRecord::RecordNotFound in TimersController#update
Couldn't find Timer without an ID
ターミナル上
Started PUT "/bbotan" for ::1 at 2021-09-07 11:06:51 +0900
Processing by TimersController#update as HTML
Parameters: {"authenticity_token"=>"[FILTERED]", "timer"=>{"timer_id"=>"21 999 1000 1001 1002 1003 1004 1005 1006 1007 1008"}, "commit"=>"bbotan"}
Completed 404 Not Found in 1ms (ActiveRecord: 0.0ms | Allocations: 666)
html該当のページ
<div class="botan">
<%= form_with model: [@timer],url: '/bbotan', method: :put, local: true do |f| %>
<%= f.hidden_field :timer_id, :value => @timer.ids %>
<%= f.submit "休憩" %>
<% end %>
</div>
コントローラー
class TimersController < ApplicationController
def index
end
def new
@timer = Timer.new
redirect_to
end
def index2
@timer = Timer.all
end
def create
@timer = Timer.create
@timer.abotan = Time.now
@timer.bbotan = Time.now
@timer.cbotan = Time.now
@timer.dbotan = Time.now
if @timer.save
redirect_to
else
render :index
end
end
def updatebbotan
@timer = Timer.find(params[:id])
@timer.bbotan = Time.now
if @timer.save
redirect_to
else
render :index
end
end
ルート
get 'abotan' => 'timers#index2'
post 'abotan' => 'timers#create'
get 'bbotan' => 'timers#index3'
put 'bbotan' => 'timers#updatebbotan'
自分で試したこと
def index2でTimer.allにしていることで、「特定のtimer_idを抽出する」ができていないのが原因だとはわかります
また追加ですが、<%= f.hidden_field :timer_id, :value => @timer.ids %>
ここのvalueが@timer.idだと
undefined method `id' for #Timer::ActiveRecord_Relation:0x00007fb65d64c3d0
Did you mean? ids
このエラーが起こります
0