解決したいこと
RailsでWebアプリをつくっています。
購入日と賞味期限をDB上に登録し、その2つのデータの差分で残り日数を表示させたいです
追記
getElementByIdメソッドでは最初の要素しか取得されず、getElementsByClassNameメソッドを使いましたが、今度は取得自体ができなくなってしまいました。コンソールで見るとinnerHTMLが使えないみたいです。
HTMLcollectionというものでdiv要素は取得できていますが、使えるメソッドが少ないみたいで、日付が取得できるか不明です。
発生している問題・エラー
該当するソースコード
javascript
1window.addEventListener('load', () => { 2 const purchaseInput = document.getElementsByClassName("purchase-date"); 3 const expirationInput = document.getElementsByClassName("expiration-date"); 4 const purchaseDate = new Date(purchaseInput.innerHTML); 5 const expirationDate = new Date(expirationInput.innerHTML); 6 const daysLeft = document.getElementsByClassName("days-left"); 7 daysLeft.innerHTML = (Math.floor( (expirationDate.getTime() - purchaseDate.getTime()) / ( 1000 * 60 * 60 * 24 ))); 8});
ruby
1<main class="main"> 2 <div class="inner"> 3 <div class="card__wrapper"> 4 <% @items.each do |item| %> 5 <div class="content"> 6 <div class="image-content"> 7 <%= link_to image_tag(item.image.variant(resize: '200x200'), class: :card__img ), item_path(item) %> 8 </div> 9 <div class="sub-content"> 10 <span>購入日</span> 11 <div id="purchase-date"><%= item.purchase_date %></div> 12 </div> 13 <div class="sub-content"> 14 <span>賞味期限</span> 15 <div id="expiration-date"><%= item.expiration_date %></div> 16 </div> 17 <div class="sub-content"> 18 <span>残り<span id='days-left'></span>日</span> 19 </div> 20 <div class="nickname-content"> 21 <%= link_to "by #{item.user.nickname}", root_path, class: :card__user %> 22 </div> 23 </div> 24 <% end %> 25 </div> 26 </div> 27</main>
ruby
1class ItemsController < ApplicationController 2 before_action :authenticate_user! 3 before_action :set_item, only: [:show, :edit, :update, :destroy] 4 before_action :move_to_index, only: [:edit, :update, :destroy] 5 6 def index 7 @items = Item.where(user_id: current_user.id).order("created_at DESC") 8 end 9 10 def new 11 @item = Item.new 12 end 13 14 def create 15 @item = Item.create(item_params) 16 if @item.save 17 redirect_to root_path 18 else 19 render :new 20 end 21 end 22 23 def show 24 end 25 26 def edit 27 end 28 29 def update 30 if @item.update(item_params) 31 redirect_to item_path(@item) 32 else 33 render :edit 34 end 35 end 36 37 def destroy 38 if @item.destroy 39 redirect_to root_path 40 else 41 redirect_to root_path 42 end 43 end 44 45 private 46 def item_params 47 params.require(:item).permit(:name, :quantity, :purchase_date, :expiration_date, :memo, :image).merge(user_id: current_user.id) 48 end 49 50 def set_item 51 @item = Item.find(params[:id]) 52 end 53 54 def move_to_index 55 unless current_user == @item.user 56 redirect_to root_path 57 end 58 end 59end
回答2件
あなたの回答
tips
プレビュー