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

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

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

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

Ruby on Rails 4

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

2回答

3434閲覧

form_forにajaxzip3は使えない?

s.k

総合スコア423

jQuery

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

Ruby on Rails 4

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

1グッド

0クリップ

投稿2016/10/29 05:11

編集2022/01/12 10:55

個人事業主の親父のマーケティングを手伝いたく、
自作でLPを制作中です。

今回躓いたのは自動住所表示機能です。

###前提・実現したいこと
form_forに自動住所表示(ajaxzip3)を実装し、保存もできるようにしたい。

###発生している問題・エラーメッセージ

【ajaxzip3実装後の情報入力の初期画面】

↓郵便番号を入力→自動で住所が出てくる

【郵便番号入力後画面】

なんとかajaxzip3が動いてくれました。

↓しかし、「確認する」ボタンを押し、確認ページが表示されると、、、

入力したはずの郵便番号と都道府県・市区町村欄が表示されません。
データベースを確認したところ、そもそもデータが保存されていませんでした。

###該当コード

【users/new.html.erb】

<script src="https://ajaxzip3.github.io/ajaxzip3.js" charset="UTF-8"></script> <div class = "row"> <div class = "col-md-6 col-md-offset-3"> <%= form_for @user , url: {action: 'confirm'} do |f| %> <%= f.label :お名前 %> <%= f.text_field :name %> <%= f.label :電話番号 %> <%= f.number_field :tell %> <%= f.label :ご自宅住所(必須) %> <%= f.number_field :zip11,name: :zip11, size: :"10", maxlength: :"8", onKeyUp: :"AjaxZip3.zip2addr(this,'','addr11','addr11');", placeholder: :"郵便番号" %> ←f.number_fieldとname部分が問題です。 <%= f.text_field :addr11,name: :addr11, size: :"60", placeholder: :"都道府県・市区町村" %>←text_fieldとname部分が問題です。 <%= f.text_field :address, placeholder: :"番地等"%> <%= f.text_field :address_buildings, placeholder: :"アパート・マンション名等" %> <%= f.label :メールアドレス %> <%= f.email_field :email %> <%= f.submit "確認する", class:"btn btn-primary" %> <% end %> </div> </div>

【users/confirm.html.erb】

<div class = "row"> <div class = "col-md-6 col-md-offset-3"> <%= form_for @user do |f| %> 名前: <%= @user.name %></br> <%= f.hidden_field :name %></br> 電話番号:<%= @user.tell %></br> <%= f.hidden_field :tell %></br> ご自宅住所:</br> 郵便番号:<%= @user.zip11 %></br>←ここが表示されない箇所です。 <%= f.hidden_field :zip11 %></br> 都道府県・市町村区:<%= @user.addr11 %></br>←ここが表示されない箇所です。 <%= f.hidden_field :addr11 %></br> 番地等:<%= @user.address %></br> <%= f.hidden_field :address %></br> アパート・マンション名:<%= @user.address_buildings %></br> <%= f.hidden_field :address_buildings %></br> email: <%= @user.email %></br> <%= f.hidden_field :email %></br> <%= f.submit '戻る', name: 'back' %> <%= f.submit '注文する' %> <% end %> </div> </div>

###試したこと

name::zip11 ```を削除し、

f.number_field :zip

name::zip11

<%= f.number_field :zip11,削除箇所(name: :zip11,) size: :"10", maxlength: :"8", onKeyUp: :"AjaxZip3.zip2addr(this,'','addr11','addr11');", placeholder: :"郵便番号" %>

↓ name: :zip11を削除 ↓

<%= f.number_field :zip11, size: :"10", maxlength: :"8", onKeyUp: :"AjaxZip3.zip2addr(this,'','addr11','addr11');", placeholder: :"郵便番号" %>

↓ ![](6197138fed222ff51ccffcb49d1257f9.png) (自動入力機能は動く。) これを同様に住所のコードでも試しました。 すると、今度は自動住所機能が動きません… ```ここに言語を入力 <%= f.text_field :addr11,削除箇所(name: :addr11,) size: :"60", placeholder: :"都道府県・市区町村" %>


name: :addr11を削除


自動住所機能なくなる。。。

git hubに乗っている参考コードでは
form_forを使っていません。
inputタグを使っています。

ajaxzip3はform_forには使えないのでしょうか?

###補足情報(言語/FW/ツール等のバージョンなど)
超簡単!たった2行だけで郵便番号から住所自動表示する方法:ajaxzip3

ajaxzip3

ご教示ください!

###情報追加

maisumakunさんへ

【パラメーター】→問題なさそうです!

ruby

1 def user_params 2 params.require(:user).permit(:name, :email, :address, :address_city, :address_buildings, :tell, :zip11, :addr11) 3 end

【属性】→データベースも確認したのですが、存在してました…

ikuwow👍を押しています

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

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

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

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

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

guest

回答2

0

サーバ側のログで、POST の次の行あたりに該当のパラメータと値に関する記録があると思いますので、そちらも併せて確認してみてください。

なお、 maisumakun さんが書かれているように Ajax の話と Rails の話は別なので

  1. Rails によるデータ処理
  2. Ajax による住所検索

の 2つを一つずつ対応することをお勧めします。先ずは Rails 単体で、郵便番号・住所を手入力した際に正常に動作することを確認し、その後で Ajax による住所検索機能について確認してみてください。

投稿2016/11/01 00:58

編集2016/11/01 03:36
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

おそらく、「Strong Parametersで属性を正しく通していない」、あるいは「モデルに必要な属性がない」のが原因かと思います。そのあたりを確認してみてください。

「入力フォームにきちんと入力されている」のであれば、AjaxZip3の仕事は(元から)そこまでしかないので、あとはRailsでハンドリングすべき問題です。

投稿2016/10/29 06:14

maisumakun

総合スコア145123

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

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

s.k

2016/11/01 00:27

maisumakunさん 返信ありがとうございます。 おそくなりすいません。 指摘された2点を確認してみたのですが、どうもうまくいきません。。。
s.k

2016/11/01 00:28

パラメーターの情報は追加して質問に載せました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問