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

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

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

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

解決済

プルダウンで選択したモデルのカラム値をフォームに挿入したい

kaniclub
kaniclub

総合スコア20

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

1回答

0リアクション

0クリップ

160閲覧

投稿2022/08/05 12:48

前提

Ruby on rails で在庫を管理するシステムを作っています。

実現したいこと

「tire(タイヤ)」モデル
「increase(入庫入力)」モデル belongs_to tire

入庫入力フォームで、tireモデルをプルダウンで選択すると、tireモデルのunit_priceカラムの値を、同じフォーム内の単価フォームに挿入したいです。

該当のソースコード

ruby

tires_controller.rb def get_unit_price tire = current_user_company.tires.find(params[:tire_id]) @unit_price = tire.unit_price respond_to do |format| format.js end end

ruby

increases_controller.rb def new @increase = current_user_company.increases.build end

ruby

routes.rb resources :increases resources :tires do collection do get :search get :get_unit_price end end

ruby

increases/_form.html.erb <%= form_with(model: increase, local: true, class: 'form-horizontal') do |form| %> <%= render 'shared/error_messages', object: increase %> <!-- タイヤ --> <div class="form-group"> <div class="field"> <%= form.label "タイヤ", class: 'control-label col-sm-2' %> <div class="col-sm-5"> <%= form.collection_select :tire_id, @tires.map, :id, :product_name, options = {:include_blank => true, selected: @increase[:tire_id]}, {class: 'form-control form-control-sm searchable', :onchange => "setUnitPrice($(this).val())"} %> </div> </div> </div> <!-- 数量 --> <div class="form-group"> <div class="field"> <%= form.label "数量", class: 'control-label col-sm-2' %> <div class="col-sm-2"> <%= form.number_field :quantity, id: :quantity, class: 'form-control form-control-sm' %> </div> </div> </div> <!-- 単価 --> <div><%= render 'increase_unit_price', form: form %></div> <div class="form-group"> <div class="actions"> <%= form.submit class: 'btn btn-primary col-sm-1' %> </div> </div> <% end %>

ruby

increases/_increase_unit_price.html.erb <div class="form-group"> <div class="field"> <%= form.label "単価", class: 'control-label col-sm-2' %> <div class="col-sm-2"> <%= form.number_field :unit_price, id: :unit_price, class: 'form-control form-control-sm' %> </div> </div> </div>

ruby

tires/get_unit_price.html.erb $("#unit_price").html("<%= j(@unit_price.to_s) %>")

javascript

set_unit_price.js function setUnitPrice(val){ var tire_id = val; $.ajax({ url: "/tires/get_unit_price", type: "GET", data: { tire_id: tire_id } }) }

試したこと

参考にさせていただいたサイト

【Rails】Ajaxでプルダウンを選択したらフォームに自動挿入 1
こちらを参考にさせていただいたのですが、text_area に挿入されていまして、実装したnumber_fieldには反映されませんでした。

Rails初心者で、基本的なことなのかもしれませんが、ご教授お願いいたします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

winterboum

2022/08/05 13:20

text_area ってどこ?
kaniclub

2022/08/05 13:25

text_areaは参考にさせていただいたサイト様のソースです。
winterboum

2022/08/05 13:47

text_area に挿入されていまして、実装したnumber_fieldには反映されませんでした。 とあるのは?
kaniclub

2022/08/05 15:00

実装したいのはfromヘルパーのnumber_fieldになります。 参考サイト様はtext_areaなので、やり方が違うのかもしれないと思い、質問させていただきました。 わかりにくい説明で申し訳ありません。
winterboum

2022/08/05 22:56

$("#unit_price").html("<%= j(@unit_price.to_s) %>") というのは #unit_price である form.number_field をそっくり ( Plane なテキスト)@unit_price.to_s に置き換える ということですから、やりたいこととは違いますね。 でも、それも起きないとすると、、、、 log 確認してみてください。
kaniclub

2022/08/06 03:03

Rendering tires/get_unit_price.html.erb Rendered tires/get_unit_price.html.erb (0.9ms) Completed 200 OK in 21ms (Views: 8.1ms | ActiveRecord: 2.1ms) ログはエラーは出ずに処理されているようです。 変化は、出力されるHTMLが <input id="unit_price" class="form-control form-control-sm" type="number" value="0" name="increase[unit_price]"> 上記の部分に、「1000</input>」が足された状態に変化いたします。 1000は選択したタイヤのunit_priceです。 <input id="unit_price" class="form-control form-control-sm" type="number" value="0" name="increase[unit_price]">1000</input>
winterboum

2022/08/06 11:24

ということは、できてる ってことでは?
kaniclub

2022/08/06 12:12

フォーム事態には1000は表示も、出力もされない状態です。 text_areaに変更するとフォームに表示されます。 ですが、表示させたいフォームはnumber_fieldになるので困っている状態です。 素人考えかもしれませんが、valueの属性にデータを挿入できればと考えています。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。