0

この質問はやや複雑で申し訳ありません。うまくいけば、誰かがこれを読む忍耐力を持っています.

このRailscastのものとよく似たネストされたモデルフォームがあります: http://railscasts.com/episodes/196-nested-model-form-revised

私のモデルは、Railscast のネストされたフォーム フィールドに非常に似ています。多くの回答がある多くの質問を含む調査があります。

すべての回答フォーム フィールドをオートコンプリート要素にするために、jQuery-UI の「オートコンプリート」要素を適用しています。しかし、ネストされたフォーム フィールドであるため、私のドキュメントには多くの回答フィールドがあります。これは通常は問題になりませんが、ラベルを表示する際にこのソリューションを適用し、オートコンプリート選択の ID を送信する必要があります。 ラベルではなく値をテキストボックスに適用するオートコンプリート

上記のリンクのソリューションを使用すると、必要なラベルだけでなく、ドキュメント内のすべての「回答フォーム フィールド」にラベルが適用されます。ネストされたフォームを使用しており、すべての「回答フォーム フィールド」にオートコンプリート ロジックを適用する必要があるため、このセレクター '[type="text"][name*="[answer]"]' でそれらを選択する必要があります。これはあまり具体的ではありませんが、私ができる限り具体的です。

jQueryセレクターを使用して、すべての回答フィールドではなく特定の回答フィールドを選択する方法を理解するために頭を悩ませています。

助けてくれてありがとう。

4

2 に答える 2

0

Questionモデルがモデルであると仮定すると、accepts_nested_attributes_forAnswerのようにテンプレートを設定できます。

<%= form_for @question do |question_builder| %>
  <% @question.answers.each_with_index do |answer, i| %>
    <% question_builder.fields_for :answers, answer do |answer_builder| %>
      <%= answer_builder.text_field :content, :id => "answer-#{i}" %>
    <% end %>
  <% end %>
<% end %>

に関連付けられた以前に保存された回答 (または新しい回答を作成) をロードすると@question、これを使用して、インデックスを使用して回答を反復処理し、i「answer-i」の一意の html ID を使用して各回答の入力をレンダリングできます。これを使用できます。 jQuery からの回答を一意に識別します。

それがあなたが探しているものであることを願っています。

于 2012-10-30T06:17:19.510 に答える
0
$('[type="text"][name*="[answer]"]').autocomplete
source: $('[type="text"][name*="[answer]"]').data('autocomplete-source')
select: (event, ui) ->
  event.preventDefault()
  $(this).val ui.item.label
  $(this).siblings('[name*="[hidden]"]').val ui.item.value
focus: (event, ui) ->
  event.preventDefault()
  $(this).val ui.item.label

これは、私が最終的に使用した coffeescript コードです。@cdesrosiers さん、ご回答ありがとうございます。回答テキスト フィールドごとに一意の ID を既に取得していることに気付きました。したがって、質問の 2 番目の部分として、[answer] という名前を含むすべてのテキスト フィールドに .autocomplete jQuery メソッドを適用できるように、jQuery セレクターを使用する方法が必要でした。

次に、この質問に関連して ( テキストボックスにラベルではなく値を適用するオートコンプリート)、多くの回答テキスト フィールドを持つフォームがあったため、特定の回答テキスト フィールドを選択する方法が必要でした。その答えは、jQuery セレクター $(this) を使用して、「この」特定の回答テキスト フィールドを参照することでした。これが、jQuery セレクターを学習しようとしている他の人に役立つことを願っています。

jQuery this selectorは、これを理解するのに役立つ質問でした。

@cdesrosiers、私の追加で回答を更新できますか?回答を回答としてマークできますか?

于 2012-10-30T23:21:48.787 に答える