🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
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

解決済

1回答

1679閲覧

RailsとjQueryで連動プルダウンを作成しましたが、プルダウンの内容が変わりません。原因が分からないのでご教示頂きたいです。

Biginner_A

総合スコア7

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クリップ

投稿2019/09/16 02:51

編集2019/09/21 04:41

発生している問題

地方プルダウンの結果によって、都道府県プルダウンの内容を変える機能を作っています
地方の結果をAjaxで送り、該当の都道府県を取得して、.js.erbにrenderするところまでは出来たと思うのですが表示が変わりません

結果もcompleted 200で成功してるように見え
原因が分からないのでご教示いただけますと幸いです...

※参考にしたサイト
http://itmemojp.blogspot.com/2012/10/rails.html

completed200

1Started GET "/new_posts/search?area_id=4" for ::1 at 2019-09-16 11:35:44 +0900 2Processing by NewPostsController#search as JSON 3 Parameters: {"area_id"=>"4"} 4通過:new_posts/search 5 Rendering new_posts/search.js.erb 6 Prefecture Load (0.4ms) SELECT `prefectures`.* FROM `prefectures` WHERE `prefectures`.`area_id` = 4 7 ↳ app/views/new_posts/search.js.erb:1 8 Rendered new_posts/search.js.erb (3.0ms) 9Completed 200 OK in 379ms (Views: 377.8ms | ActiveRecord: 0.4ms)

routes.rb

Rails.application.routes.draw do # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html root 'all_posts#all_post' get 'post_detail', to: 'post_details#post_detail' resources :new_posts do collection do get 'search' end end end

new.html.erb

<div class="form_body"> <%= form_for(@posts, url: new_posts_path) do |f| %> <div class ="pulldown">場所: <%= f.collection_select(:id, Area.all, :id, :area) %> <%= render 'new_posts/search', {:f => f} %> </div> <br> 下記省略

_search.html.erb

<%= f.select(:prefecture_id, @prefectures, :id, :prefecture) %>

new_post.js

'use strict' $(document).ready(function() { $("p").text("jQuery稼働てすと(稼働中)"); $('#post_id').on('change', function() { var area_id = $('option:selected').val(); console.log(area_id); $.ajax({ type:'GET', url:'/new_posts/search', data: {area_id: area_id}, dataType:'json' }); console.log('Ajax完了'); }); });

new_posts_controller.rb

class NewPostsController < ApplicationController require 'pry' def new @posts = Post.new @prefectures = Prefecture.where(area_id: '1') respond_to do |format| format.html # new.html.erb format.json { render json: @posts } end end def create @Post = Post.new(post_params) @Post.save! redirect_to root_path end def search @prefectures = Prefecture.where(area_id: params[:area_id]) area_id = params[:area_id] puts '通過:new_posts/search' render end

search.js.erb

$("#post_prefecture_id").html("<%= escape_javascript(options_for_select(@prefectures.map{ |prefecture| [prefecture.id, prefecture.prefecture] })) %>");

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

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

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

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

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

m.ts10806

2019/09/16 04:50

初心者アイコンがありますのでタイトルにわざわざ入れる必要はありませんよ(タイトルに入れたところで要件ではないのでむしろ邪魔です)
退会済みユーザー

退会済みユーザー

2019/09/16 07:16

上のコメントはみられましたか?
Biginner_A

2019/09/21 02:17

ご指摘ありがとうございます。 修正しました
m.ts10806

2019/09/21 02:18

tonkoさん 催促不要です(煽ってるように受け取られます) Biginner_Aさん もう少し具体的に指示として書けばよかったですが「初心者アイコン」をつけてください。
退会済みユーザー

退会済みユーザー

2019/09/21 05:13

そうでしたね。すみませんでした。
guest

回答1

0

ベストアンサー

最近ajax触ってないので自信はないのですが、思いつく限りの対応を挙げてみました。

error原因特定のために

ブラウザでF12キーを押すと開ける開発者ツールは利用されていますか?

search.js.erb 内で console.log(変数) を呼び出して、必要な変数が search.js.erb で利用できる状態になっているかどうか確かめてみてはいかがでしょう?

rubyの変数であれば

ruby:search.js.erb

1 console.log("<%= 変数名 %>");

で表示出来たような気がします。

どこでエラーが発生しているか特定できていないと、対策を取るのは難しいと思います。
※rails 側のエラーはない、という前提で話しています。

気になるところ(特に確信はないです)

また、$ajax 付近で設定している dataType ですが、 json にする必要はなかったような気がします。
そこにscriptと指定されている方もいるようなので、試してみる価値はあるかもしれません(ないかもしれません。。。)

あくまでももしかしたらなのですが、処理結果がerbではなくnew_post.js側に帰ってしまっていて、そのために処理が進んでいないかもしれないなと思いました。

投稿2019/09/21 05:55

siruku6

総合スコア1382

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

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

Biginner_A

2019/09/28 00:23

助言いただいた部分を確認してみようと思います...!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問