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

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

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

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

Q&A

0回答

1249閲覧

Rails4 validatesで弾かれた場合に一定の項目だけ値が未選択状態に戻る

smith

総合スコア73

Ruby on Rails

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

0グッド

1クリップ

投稿2015/02/18 15:35

編集2015/02/18 15:35

フォーム送信でvalidatesに弾かれた場合、カテゴリとサブカテゴリが未選択状態に戻ってしまいます。
カテゴリとサブカテゴリ入力した値を保持させるにはどうしたら良いでしょうか
他の選択項目はちゃんと保持されています。

lang

1class ItemsController < ApplicationController 2 3def new_index 4 @search = Item.search(params[:q]) 5 @items = @search.result.page(params[:page]).per(48) 6 end 7 8 def create 9 @item = current_user.items.build(item_params) 10 respond_to do |format| 11 if @item.save 12 format.html { redirect_to @item, notice: 'アイテムを登録しました' } 13 14 format.json { render :show, status: :created, location: @item } 15 else 16 17 format.html { render :new } 18 format.json { render json: @item.errors, status: :unprocessable_entity } 19 end 20 end 21 end 22 23 24 25 26 27 28 29 30 31#item/form 32 33 <div class="form-group"> 34 <label for="category_id" class="col-sm-3 control-label">カテゴリ</label> 35 <div class="col-sm-9"> 36 37 <%= f.select :category_id, options_for_select(categories.collect { |category| 38 [category.name, category.id] }), {:include_blank => '選択してください' }, 39 { id: 'category_select', class: 'form-control select select-default select-block mbl' } %> 40 41 <br> 42 <%= f.select :sub_category_id, options_for_select(sub_categories.collect { |child| 43 [child.name, child.id] }), {:include_blank => '選択してください' }, 44 { id: 'sub_category_select' , class: 'form-control select select-default select-block mbl '} %> 45 46 </div> 47 </div> 48

lang

1 2$(document).on('change', '#category_select', function(evt) { 3 $.ajax({ 4 type: 'GET', 5 url: 'items/list', 6 dataType: 'json', 7 data: { 8 category_id: $("#category_select option:selected").val() 9 }, 10 error: function(jqXHR, textStatus, errorThrown) { 11 console.log("AJAX Error: " + textStatus); 12 }, 13 success: function(data, textStatus, jqXHR) { 14 $("#sub_category_select").empty(); 15 if (data.length == 0) { 16 $("#sub_category_select").hide(); 17 } else { 18 $("#sub_category_select").show(); 19 } 20 $.each(data, function(idx, sub) { 21 // console.log("" + item.code + ":" + item.name); 22 $("#sub_category_select").append('<option value="' + sub.id + '">' + sub.name + '</option>'); 23 }); 24 console.log("Dynamic country select OK!"); 25 } 26 }); 27 }); 28 29 30

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問