🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1084閲覧

リセットボタンが動作しないので教えてください

zoff77

総合スコア19

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/12/10 01:00

編集2020/12/10 11:39

date_selectの検索機能で、リセットボタンを配置したのですが、
押しても検索で出したtbodyが消えてくれません。
解決方法を教えて頂けないでしょうか?

*やりたいこと*

イメージ説明

↑リセットボタンを押すことで検索結果の11/1のレコードをクリアしたい

イメージ説明

↑こうなれば成功。
しかし、現状はリセットボタンを押してもレコードは残ったままです・・・・

erb

1<p> 2 <%= form_with url: log_user_attendance_path, local: true, method: :get do |f| %> 3 <%= f.date_select :worked_on, {use_month_numbers: true, discard_day: true}, {class: "form-control bootstrap-date-only-width"} %> 4 <%= f.submit "検索", class: "btn btn-lg btn-primary" %> 5 <%= f.button "リセット", type: :reset %> 6 <% end %> 7</p> 8 9<div class = "log-table"> 10 <table class="table table-bordered table-condensed overtime-table"> 11 <thead class="log"> 12 <th>日付</th> 13 <th>変更前出社時間</th> 14 <th>変更前退社時間</th> 15 <th>変更後出社時間</th> 16 <th>変更後退社時間</th> 17 <th>指示者</div> 18 <th>承認日</div> 19 </th> 20 </thead> 21 <tbody class="line"> 22 <% @attendances.each do |day| %> 23 <tr class="center"> 24 <td><%= l(day.worked_on, format: :short) %></td> 25 <td><%= day.started_before_at.try(:strftime,"%H:%M") %></td> 26 <td><%= day.finished_before_at.try(:strftime,"%H:%M") %></td> 27 <td><%= day.started_at.try(:strftime,"%H:%M") %></td> 28 <td><%= day.finished_at.try(:strftime,"%H:%M") %></td> 29 <td><%= day.indicater_check_edit %></td> 30 <td><%= l(day.updated_at, format: :md) %></td> 31 </tr> 32 <% end %> 33 </tbody> 34 </table> 35</div>

rb

1 2*該当のコントローラー 3 4def log 5 @user = User.find(params[:user_id]) 6 # もし受け取ったパラメーターにworked_on(1i)とworked_on(2i)があれば(1iは年、2iは月) 7 if params["worked_on(1i)"].present? && params["worked_on(2i)"].present? 8 # 受け取ったworked_onの年と月を年/月にして、変数 year_monthに代入 9 year_month = "#{params["worked_on(1i)"]}/#{params["worked_on(2i)"]}" 10 # もし変数year_monthがあればDateTimeを日付に変換 11 @day = DateTime.parse(year_month) if year_month.present? 12 # @attendancesに@user.attendancesからindicater_reply_editカラムが承認のものとworked_on:のカラムが@dayのものを全て取得 13 @attendances = @user.attendances.where(indicater_reply_edit: "承認").where(worked_on: @day.all_month) 14 else 15 @attendances = @user.attendances.where(indicater_reply_edit: "承認").order("worked_on ASC") 16 end 17end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

no1knows

2020/12/10 07:52

> 解決方法を教えて頂欠席加算ないでしょうか? 落ち着いたら、リセットボタンを押したときにどういった処理をしているか追記いただければと思います。
zoff77

2020/12/10 11:41

すいません・・・ 分が乱れたままでしたね。。。 リセットボタンを押してもターミナルは動かないままです。 一応、やりたいことを追記しましたので、宜しくお願い致します。
no1knows

2020/12/12 04:55

リセットボタンに紐づくコントローラーや、JavaScriptなどはどのようになっていますか?
zoff77

2020/12/13 09:47

コントローラーに関しては記載した内容のみとなります。 また、jsは使用せず、railsので作成しようと考えていますが、不可能ですかね?
guest

回答1

0

ベストアンサー

この view ですと"検索","リセット" どちらを押しても def log が呼ばれます。
ここで "検索","リセット" どちらなのかでの場合分けが無いのでどちらも同じ動作をします。

パラメーターをみると、"検索","リセット" のどちらが押されたか判る情報があるとおもうので、それを使って場合分けし、リセットの処理を書いてください。

もしくは、
botton_to にしてそちらでリセット処理を書くか。

投稿2020/12/31 05:45

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問