質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1130閲覧

jsでrailsのform_withメソッドのidを取得したい・

hatopopo21

総合スコア40

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/01/18 14:07

現状

 PAYJPを用いて、購入機能を実装したいと思っています。クレジットカードの情報をトークン化する為に、ますはJavaScriptでhtml.erbの要素を取得したいので以下の記述を行いました。
JavaScriptは学習して2日しか経っていません。
取得したい要素はform_withメソッドのidのcarge_formです。

JavaScript

1const pay = () => { 2 const charge_form = document.getElementById("charge-form"); 3 charge_form.addEventListener("click", (e) => { 4 e.preventDefault(); 5 console.log("フォーム送信時にイベント発火"); 6 }); 7}; 8window.addEventListener("load", pay);

Ruby

1<%= form_with(model: @order_form, url: item_orders_path, method: :post, local: true) do |form| %> 2<%= render 'shared/error_messages', model: @order_form %> 3<%= render "shared/second-header"%> 4 5<div class='transaction-contents'> 6 <div class='transaction-main'> 7 <h1 class='transaction-title-text'> 8 購入内容の確認 9 </h1> 10 <% @items.each do |item| %> 11 <div class='buy-item-info'> 12 <%= image_tag item.image, class: 'buy-item-img' %> 13 <div class='buy-item-right-content'> 14 <h2 class='buy-item-text'> 15 <%= item.title %> 16 </h2> 17 <div class='buy-item-price'> 18 <p class='item-price-text'>¥<%= item.item_price %></p> 19 <p class='item-price-sub-text'><%= item.shipping_fee.name %></p> 20 </div> 21 </div> 22 </div> 23 24 <div class='item-payment'> 25 <h1 class='item-payment-title'> 26 支払金額 27 </h1> 28 <p class='item-payment-price'> 29 ¥<%= item.item_price %> 30 </p> 31 </div> 32 <%end%> 33 34 <%= form_with(mode: @order_form, local: true, url: item_orders_path, id: 'charge-form', class: 'transaction-form-wrap') do |f| %> 35 <%# カード情報の入力 %> 36 <div class='credit-card-form'> 37 <h1 class='info-input-haedline'> 38 クレジットカード情報入力 39 </h1> 40 <div class="form-group"> 41 <div class='form-text-wrap'> 42 <label class="form-text">カード情報</label> 43 <span class="indispensable">必須</span> 44 </div> 45 <%= f.text_field :number, class:"input-default", id:"card-number", placeholder:"カード番号(半角英数字)", maxlength:"16" %> 46 <div class='available-card'> 47 <%= image_tag 'card-visa.gif', class: 'card-logo'%> 48 <%= image_tag 'card-mastercard.gif', class: 'card-logo'%> 49 <%= image_tag 'card-jcb.gif', class: 'card-logo'%> 50 <%= image_tag 'card-amex.gif', class: 'card-logo'%> 51 </div> 52 </div> 53 <div class="form-group"> 54 <div class='form-text-wrap'> 55 <label class="fo-text">有効期限</label> 56 <span class="indispensable">必須</span> 57 </div> 58 <div class='input-expiration-date-wrap'> 59 <%= f.text_area :exp_month, class:"input-expiration-date", id:"card-exp-month", placeholder:"例)3" %> 60 <p>月</p> 61 <%= f.text_area :exp_year, class:"input-expiration-date", id:"card-exp-year", placeholder:"例)23" %> 62 <p></p> 63 </div> 64 </div> 65 <div class="form-group"> 66 <div class='form-text-wrap'> 67 <label class="form-text">セキュリティコード</label> 68 <span class="indispensable">必須</span> 69 </div> 70 <%= f.text_field :cvc,class:"input-default", id:"card-cvc", placeholder:"カード背面4桁もしくは3桁の番号", maxlength:"4" %> 71 </div> 72 </div> 73 <%# /カード情報の入力 %> 74 75 <%# 配送先の入力 %> 76 <div class='shipping-address-form'> 77 <h1 class='info-input-haedline'> 78 配送先入力 79 </h1> 80 <div class="form-group"> 81 <div class='form-text-wrap'> 82 <label class="form-text">郵便番号</label> 83 <span class="indispensable">必須</span> 84 </div> 85 <%= f.text_field :post_num, class:"input-default", id:"postal-code", placeholder:"例)123-4567", maxlength:"8" %> 86 </div> 87 <div class="form-group"> 88 <div class='form-text-wrap'> 89 <label class="form-text">都道府県</label> 90 <span class="indispensable">必須</span> 91 </div> 92 <%= f.collection_select(:prefecture_id, Prefecture.all, :id, :name, {}, {class:"select-box", id:"prefecture"}) %> 93 </div> 94 <div class="form-group"> 95 <div class='form-text-wrap'> 96 <label class="form-text">市区町村</label> 97 <span class="indispensable">必須</span> 98 </div> 99 <%= f.text_field :city, class:"input-default", id:"city", placeholder:"例)横浜市緑区"%> 100 </div> 101 <div class="form-group"> 102 <div class='form-text-wrap'> 103 <label class="form-text">番地</label> 104 <span class="indispensable">必須</span> 105 </div> 106 <%= f.text_field :street_num, class:"input-default", id:"addresses", placeholder:"例)青山1-1-1"%> 107 </div> 108 <div class="form-group"> 109 <div class='form-text-wrap'> 110 <label class="form-text">建物名</label> 111 <span class="form-any">任意</span> 112 </div> 113 <%= f.text_field :building_num, class:"input-default", id:"building", placeholder:"例)柳ビル103"%> 114 </div> 115 <div class="form-group"> 116 <div class='form-text-wrap'> 117 <label class="form-text">電話番号</label> 118 <span class="indispensable">必須</span> 119 </div> 120 <%= f.text_field :tell_num, class:"input-default", id:"phone-number", placeholder:"例)09012345678",maxlength:"11"%> 121 </div> 122 </div> 123 <%# /配送先の入力 %> 124 <div class='buy-btn'> 125 <%= f.submit "購入" ,class:"buy-red-btn" %> 126 </div> 127 <% end %> 128 </div> 129</div> 130<%= render "shared/second-footer"%> 131<% end %>

エラー内容

Uncaught TypeError: Cannot read property 'addEventListener' of null

仮説内容

nullが返されているので、要素がなくaddEventListenerの反応ができないと考えています。
form_withの記述が誤りで要素が取得できないのかと思いましたが、これで大丈夫ではないかと思いました。
調べてみても限界です。

実現したいこと

html.erbの要素を取得したいです。しかしform_withメソッドの要素を取得することができない,nullが返ることを改善したいです。

改善策やアドバイスをいただけないでしょうか?宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

解決結果

index.html.erbのform_withが二つあることが原因でidを取得することができませんでした。
トップにあるこちら
<%= form_with(model: @order_form, url: item_orders_path, method: :post, local: true) do |form| %>
を削除して、もう一つの
<%= form_with(mode: @order_form, local: true, url: item_orders_path, id: 'charge-form', class: 'transaction-form-wrap') do |f| %>
をトップに持ってくることで改善することが可能になりました。

投稿2021/01/18 15:57

hatopopo21

総合スコア40

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問