rails3-jquery-autocomplete не работает в Rails 3.2.1? - PullRequest
1 голос
/ 25 февраля 2012

У меня есть сообщение и тег модель:

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>

Я следовал инструкциям в git-хранилище гема:

controllers / posts_controller.rb:

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

(и т. Д.)

rout.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)

1 Ответ

2 голосов
/ 28 февраля 2012

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

controllers / posts_controller.rb:

autocomplete :tag, :name

routes.rb

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

Затем вам нужно изменить текстовое поле_этапа на autocomplete_field, как указано в инструкции в представлении.

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

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

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

views / posts / 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

просмотры / сообщения / _form.html.erb

<div class="fields">
    f.label :name, "Tag"
    f.autocomplete_field :tag_name, autocomplete_tag_name_products_path
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...