2012-02-25 2 views
1

У меня есть сообщение и Tag модель:rails3-jquery-autocomplete не работает в Rails 3.2.1?

class Post < ActiveRecord::Base 
    has_and_belongs_to_many :tags 

    def tag!(tags) 
    tags = tags.split(" ").map do |tag| 
     Tag.find_or_create_by_name(tag) 
    end 
    self.tags << tags 
    end 
end 

class Tag < ActiveRecord::Base 
    has_and_belongs_to_many :posts 
end 

схема:

create_table "tags", :force => true do |t| 
    t.string "name" 
    end 

часть из posts/_form:

<div class="field"> 
    <%= f.label :tags %> 
    <%= text_field_tag :tags, params[:tags] %> 
    </div> 

Я следовал за instructions в репозиторий драгоценного камня:

Контроллеры/posts_controller.rb:

class PostsController < ApplicationController 
    before_filter :authenticate_user!, :except => [:show, :index] 
    autocomplete :tags, :name 

(и т.д ..)

routes.rb:

resources :posts do 
    get :autocomplete_tags_name, :on => :collection 
end 

Все JavaScripts файлы есть:

 <script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script> 
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script> 
<script src="/assets/autocomplete-rails.js?body=1" type="text/javascript"></script> 

, но абсолютно ничего не происходит (я проверил это, добавив тег через консоль).

Любые предложения по изготовлению этого драгоценного камня? (Я на Rails 3.2.1)

+0

Вы нашли решение для этого? –

+0

Вы когда-нибудь получали ваш поиск автозаполнения? Если да, пожалуйста, поделитесь своим кодом. Я сталкиваюсь с подобной проблемой. – takaloosingh

ответ

2

Во-первых, вы могли бы привести в порядок свой плюрализацию (может работать в любом случае, но делает его легче сравнивать с инструкциями)

контроллеры/posts_controller.rb:

autocomplete :tag, :name 

routes.rb

resources :posts do 
    get :autocomplete_tag_name, :on => :collection 
end 

Затем вам нужно измените свой text_field_tag ​​на autocomplete_field, как указано в инструкциях.

Из инструкции:

form_for @product do |f| 
    f.autocomplete_field :brand_name, autocomplete_brand_name_products_path 
end 

Я предлагаю вам использовать Rails форма помощника form_for. В вашем случае, когда вы используете частичное это будет выглядеть примерно так:

просмотры/сообщения/new.html.erb (или там, где вы называете парциальный от):

form_for(:product, :url => {:action => 'create'}) do |f| # I've found that @product doesn't work on new creations and therefor I use :product 
    render(:partial => "form", :locals => {:f => f}) 
    f.submit 
end 

views/posts/_form.html.erb

<div class="fields"> 
    f.label :name, "Tag" 
    f.autocomplete_field :tag_name, autocomplete_tag_name_products_path 
</div> 
Смежные вопросы