1

私のアプリケーションでは、オートコンプリートを使用して Google Maps API から場所の詳細を含む json を取得します

var place = autocomplete.getPlace();

place.name 同じページに、ユーザーから別の詳細を取得するフォームがあります。place.name問題は、フォームが送信されたときに Rails コントローラーに渡す方法です。jsでフォームのHTMLを変更してみた

<form...>
<div id="hidden_fields"></div>
</form>

使用して

$("#hidden_fields").append("<input name='name' type='hidden' value='"+place.name+"' />");

しかし、どうやらそれは機能しません。そのようなことをするためにAJAXを学ぶべきですか、それとも別の方法がありますか? ヒントをお寄せいただきありがとうございます。

4

2 に答える 2

0

オートコンプリートが終了した後、非表示フィールドを作成していることを確認してください。送信する前に、非表示の変数が追加されているかどうかをビューソースで確認してください。送信前にフォームタグで使用可能なコントロールである限り、コントローラーはそれを取得できます。

于 2012-11-04T16:30:22.710 に答える
0

皆さん、ありがとうございました!問題は解決しました。私が学んだ重要なことは、

  1. View/Source は動的に追加されたコンテンツを表示しませんが、Firebug は表示します。
  2. Railsはフォームのフィールド名を変更します:それは変わります

<%=form_for @place do |f| ...

<%= f.password_field :password , :class =>"フォームフィールド", :id =>"passwordField"

の中へ

<input class="form-field" id="passwordField" name="place[password]" type="password" />

つまり、同じ方法で js から値を渡す必要があります。

$text.append('<input name="place[name]" type="hidden" value="'+place.name+'"/>');

それが他の誰かに役立つことを願っています。

于 2012-11-05T00:28:42.957 に答える