2

わかりましたので、ここで明らかな何かが欠けている可能性があります。私はrails3-jquery-autocompleteformtasticを使用して、アイテムの作成時にユーザーがカテゴリを選択できるようにしています。

class Category < ActiveRecord::Base
  has_many :items
end

class Item < ActiveRecord::Base
  belongs_to :category

  validates :category_id, :presence => true
end

私はこれを次の方法で機能させました:

semantic_form_for @item do |form|
  form.inputs do
    form.input :category_id, :as => :hidden
    form.autocompleted_input :category, 
                             :url => autocomplete_category_path, 
                             :id_element => "#item_category_id"
  end
end

それはすべてうまく機能し、ダンディです。ユーザーがカテゴリ名を選択すると、category_id が非表示フィールドに入り、アイテムが適切に保存されます。

ただし、ユーザーが有効なカテゴリを入力/選択しないと、検証で問題が発生します。次のケースを検証する適切な方法は何ですか:

  1. ユーザーがボックスに有効なカテゴリではない何かを入力しました。(これは失敗する必要があります。現在は失敗していますが、インライン エラーは実際には隠しフィールドにあります)
  2. ユーザーが選択を行った後、テキスト フィールドの値を無効なカテゴリに変更します (その結果、非表示フィールドの ID が古くなります。これも失敗するはずですが、代わりに古い選択された ID が使用されます)。

ありがとう!

4

1 に答える 1

0

jQuery Tokeninputを探しているようです。REST 経由でカテゴリを提供するか、JSON を初期化に含めるだけです

$("#mytokeninputfield").tokenInput("/categories.json",
  {
   tokenLimit: 1 // allow at most 1 item
  });

<input type="text" id="mytokeninputfield" name="item[category_tokens]" data-pre="<%= @user.category_id %>"/>

トークンフィールドのrailscast #258 を参照してください。私の gemも同様にトークン化されます (ただし、現在は使用していませんが、バグを報告してください。面倒を見てください。または、インスピレーションを得て、自分で実行してください :) )

于 2011-10-12T07:40:50.197 に答える