Сохраните идентификатор поля автозаполнения вместо текста (автозаполнение Jquery) в Rails3 - PullRequest
1 голос
/ 17 октября 2010

Мне удалось настроить поле автозаполнения для моего приложения rails. То, что я пытаюсь сделать, - это отобразить содержимое таблицы поиска, и когда я выбрал текст поиска для нескольких строк, я бы хотел, чтобы идентификатор поиска был сохранен вместо самого текста. Вот что я сделал:

Модель рецепта:

class Recipe < ActiveRecord::Base
  # validates :name,  :presence => true
  # validates :directions, :presence => true

  # has_and_belongs_to_many :ingradients

  has_many :ingredients_recipes
  has_many :ingredients, :through => :ingredients_recipes

  accepts_nested_attributes_for :ingredients_recipes, :allow_destroy => true
end

Контроллер:

class RecipesController < ApplicationController
  # autocomplete :ndb_food_des, :long_desc
  autocomplete :ndb_food_de, :long_desc, :limit => 15

  ... more lines
end

Затем я использую это в представлении:

 <% f.fields_for :ingredients_recipes do |rif| %>        
          <td>            
              <%= rif.autocomplete_field :ingredient_id, recipes_autocomplete_ndb_food_de_long_desc_path, :width=>1000, :size=>60 %>
          </td>  
<% end %>

У меня есть три строки деталей, сгенерированные при открытии представления, и я хочу написать идентификатор выбранного элемента из автозаполнения. Если я указываю правильное поле в представлении как component_id, тогда я всегда получаю 0 в идентификаторе во вставке. Если я укажу какое-то другое поле, я получу полный текст автозаполнения, поэтому кажется, что Rails выбирает правильное поле и, кажется, знает, что делать ... но не получает правильный идентификатор.

Вот след того, что делает система:

Started POST "/recipes" for 127.0.0.1 at 2010-10-17 16:28:10 +0000
  Processing by RecipesController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"wmNQbsGoiGccrNpmFs7r7D7ZBq//SBe9yrk6SFXP0lc=", "recipe"=>{"name"=>"dfsa", "description"=>"sdfa", "directions"=>"sadf", "ingredients_recipes_attributes"=>{"0"=>{"ingredient_id"=>"CAMPBELL Soup Company, CAMPBELL'S Beef Gravy", "readable_qty"=>"30", "description"=>""}, "1"=>{"ingredient_id"=>"Eclairs, custard-filled with chocolate glaze, prepared from recipe", "readable_qty"=>"60", "description"=>""}, "2"=>{"ingredient_id"=>"DENNY'S, MOONS & STARS chicken nuggets, from kid's menu", "readable_qty"=>"10", "description"=>""}}, "servings"=>"3", "time"=>"3"}, "commit"=>"Create Recipe"}
  SQL (27.9ms)  INSERT INTO "recipes" ("created_at", "description", "directions", "name", "owner", "servings", "time", "updated_at") VALUES ('2010-10-17 16:28:10.686644', 'sdfa', 'sadf', 'dfsa', NULL, 3, 3, '2010-10-17 16:28:10.686644')
  SQL (0.2ms)  INSERT INTO "ingredients_recipes" ("created_at", "description", "ingredient_id", "qty", "recipe_id", "updated_at") VALUES ('2010-10-17 16:28:10.729542', '', **0,** 32.0, 18, '2010-10-17 16:28:10.729542')
  SQL (0.1ms)  INSERT INTO "ingredients_recipes" ("created_at", "description", "ingredient_id", "qty", "recipe_id", "updated_at") VALUES ('2010-10-17 16:28:10.783068', '', **0,** 62.0, 18, '2010-10-17 16:28:10.783068')
  SQL (0.1ms)  INSERT INTO "ingredients_recipes" ("created_at", "description", "ingredient_id", "qty", "recipe_id", "updated_at") VALUES ('2010-10-17 16:28:10.784333', '', **0,** 12.0, 18, '2010-10-17 16:28:10.784333')
Redirected to http://0.0.0.0:3000/recipes/18
Completed 302 Found in 190ms


Started GET "/recipes/18" for 127.0.0.1 at 2010-10-17 16:28:10 +0000
  Processing by RecipesController#show as HTML
  Parameters: {"id"=>"18"}
  Recipe Load (0.4ms)  SELECT "recipes".* FROM "recipes" WHERE ("recipes"."id" = 18) LIMIT 1
  IngredientsRecipe Load (0.3ms)  SELECT "ingredients_recipes".* FROM "ingredients_recipes" WHERE ("ingredients_recipes".recipe_id = 18)
  Ingredient Load (0.2ms)  SELECT "ingredients".* FROM "ingredients" WHERE ("ingredients"."id" = 0) LIMIT 1
  CACHE (0.0ms)  SELECT "ingredients".* FROM "ingredients" WHERE ("ingredients"."id" = 0) LIMIT 1
  CACHE (0.0ms)  SELECT "ingredients".* FROM "ingredients" WHERE ("ingredients"."id" = 0) LIMIT 1
  CACHE (0.0ms)  SELECT "ingredients".* FROM "ingredients" WHERE ("ingredients"."id" = 0) LIMIT 1
  CACHE (0.0ms)  SELECT "ingredients".* FROM "ingredients" WHERE ("ingredients"."id" = 0) LIMIT 1
  CACHE (0.0ms)  SELECT "ingredients".* FROM "ingredients" WHERE ("ingredients"."id" = 0) LIMIT 1
Rendered recipes/show.html.erb within layouts/application (112.1ms)
Completed 200 OK in 143ms (Views: 117.4ms | ActiveRecord: 0.9ms)

Я выделил текст жирным шрифтом в примере выше, где он пишет текст вместо идентификатора автозаполнения. Я понятия не имею, как настроить его на использование идентификатора.

Помощь будет очень признателен.

1 Ответ

0 голосов
/ 14 декабря 2010

вы можете использовать :id_element, чтобы получить идентификатор выбранного элемента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...