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

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

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

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

0回答

633閲覧

erbファイルにてセレクトボックスで選択したら自動でrailsのupdateを行いたい

tarotarotarotar

総合スコア41

Ruby on Rails

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/04/18 02:23

編集2021/04/18 02:33

いつもお世話になっております。

現在
「erb(haml)にセレクトボックスが設置されており、選択すると自動でDBの値が更新される」
ということを実現したいです。

今回は食材を選ぶと自動でその食材の名前が登録されるというようにしたいです。

イメージ説明

上記のようにsubmitボタンはなく、選択するだけで更新したいです。

現状はこの様になっております。

haml

1= form_with url: foods_path(@food.id), method: "PATCH" do |f| 2 = fields_for :@food do |t| 3 = t.select :name, { '選択肢1': 'たまご', '選択肢2': 'にんじん' }, { include_blank: '食材' }, { class: 'ajax-normal'} 4 = f.hidden_field :ajax_food_id, id: "ajax-food-id", value: @food.id

js

1$('.ajax-normal').on('change', function(){ 2 saveInfo($(this)); 3}); 4 5var saveInfo = function(obj){ 6 $.ajax({ 7 url: '/foods/' + foods_id, 8 type: 'PATCH', 9 data: obj, 10 from: 'ajax' 11 }) 12}

ruby

1~ 2def update 3 food = Foods.find(id:params[:id]) 4 food.name = params[:name] 5 food.save

現在詰まっているのが
セレクトボックスで選択された値を送ることが出来ない
ということです。

上記のコードだと、hamlのクラスそのもの(ajax-nomal)を送信しているだけでセレクトボックスの選択が意味をなしておりません。

選択した項目の値がパラメーターとしてサーバーに飛び、それを受け取ったサーバーがupdateメソッドを起動して更新

をするにはどうすればいいのか。を教えていただけましたら幸いです。
よろしくおねがいいたします。

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

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

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

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

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

m.ts10806

2021/04/18 02:43

.val()じゃダメなんですか?
tarotarotarotar

2021/04/18 02:49

すみません、.val()の使い方がピンときてないです。 = t.select :roles, { '選択肢1': '"{\"email\":true,\"post\":false}"', '選択肢2': '"{\"email\":true,\"post\":false}"' }, { include_blank: '役割' }, { class: 'families-ajax-normal'}, { value: 'trust-roles'} としようとしたのですが、 wrong number of arguments (given 5, expected 1..4) というエラーが出てしまい、動作しなくなってしまいます。 どこに入れたらいいのか教えていただけますと幸いです。
m.ts10806

2021/04/18 03:20

$(要素).val()  で選択した値が取れます。
tarotarotarotar

2021/04/18 09:51

ありがとうございます。取ることが出来ました。 ベストアンサーとさせていただきたいのですが、簡単でもいいので回答欄にご記入いただけますと幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問