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!

ボタンを押したらdbにデータが送信される仕組み

解決したいこと

Aページでボタンを押したらBページに飛びます、Bページでボタンを押したらCページに飛びます、CページからはAページです
その際に時間をdbに送信する仕組みを作りたいです
postでデータを送信するのはわかりますが、それをどのように適応させるべきかわかりません
またCページに飛んだ時、DB側のデータがupdateされるのもわかりますがどのように書くべきかわかりません

発生している問題・エラー

<body>
<h2>アプリ</h2>
<%= button_to 'ジャンプ', timers_jumptob_path, method: :post %>
</body>

class TimersController < ApplicationController
    def new
        @timer = Timer.new
    end
    def create
        Timer.create(timer_params)
    end
    def update

    end

    private
  def timer_params
    params.require(:timer).permit(:jumptoa, :jumptob, :jumptoc)
  end
end

自分で試したこと

0

2Answer

その際に時間をdbに送信する仕組み

と考えるから多分難しくて、

Aページでボタンを押したらBページに飛びます、Bページでボタンを押したらCページに飛びます、CページからはAページです

という風に

クライアント→サーバー→クライアント→サーバー→クライアント→サーバー..

という流れならクライアントからわざわざ時間を送らなくても、サーバーがページ処理する際にその時の時間を記録すれば良いのでは?

0Like

Comments

  1. @POSO

    Questioner

    どうやるべきですか?教えてください

多分rails全体のデータの流れが分からないと説明しても分からないと思うので

を上から下まである程度読んで、ページ間の遷移を卒なくこなせるようになってから今やりたいことに戻ってきたほうが早いと思います。

上のサンプルコードではどういう風にABCページへ遷移しているのか分からないですが、遷移するタイミングで

遷移させるcontroller

def 遷移するactionメソッド
  ...
  # Timer.update(...) なり
  # Timer.create(...) なり
  ...
end

をやることになると思います。

0Like

Comments

  1. @POSO

    Questioner

    ページ間の遷移は問題ないです
    コントローラーにcreate updateを書くのもわかります、例えばこの場合メソッド内にTimer.new などを記入してデータを送信しますよね、createで新しいカラムを製作、updateでそれを更新するという具合に
    DB側にあるカラムに押した時間の情報を送信する、という方法がわからないです
  2. カラムとはcolumnの事ですか?(多分recordの意味?)

    create -> レコードが出来る(同じIDで同じレコードが取れる)
    id -> クライアントに渡す
    クライアントがサーバーにidを渡す -> サーバー
    サーバーがidから同じレコードを取ってくる -> update


    t = Timer.create(...)
    puts x.id

    t = Timer.find(...)
    t.update(...)

  3. @POSO

    Questioner

    はい、レコードの情報、今日ボタンをいつ押したのかという情報(この場合はAを押した時間、Bを押した時間ごとに分けられますが)その分けられている列をカラムと呼んでいます、明日同じように情報を保存したら別のIDとなります
    これだとmodelに書くことになりそうですね、あってますか?
  4. @POSO

    Questioner

    調べてformwithでデータ送信することにしました
    htmlコード
    <%= form_with url: '/abotans', method: :post, local: true do |form| %>
    #疑問その1
    <%= form.submit "ボタンそのいち" %>
    <% end %>
    routeコード
    get 'timers/abotan' => 'timers#bbotan'
    post 'abotans' => 'timers#create'
    controllerコード
    def new
    @timer = Timer.new
    end
    def create
    @timer = Timer.create(abotan: params[:abotan])
    end
    def update
    @timer = Timer.find(params[:id])
    end
    疑問その1、ここに<%= form %>を記述しないとデータ送信できないのはわかります、現在時刻を送信する方法を教えてください
    疑問その2、データベースに保存するレコードはnewでidが作られ、createでそのid内の情報に追加され(この場合はabotan、ボタンその1を押した時間ですね)updateでどんどんデータが追加、編集されます(bbotan、ボタンその2を押した時間など)
    この際どのようなコードを書くべきでしょうか

Your answer might help someone💌