POSO
@POSO

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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

No Answers yet.

Your answer might help someone💌