Rails 3 автозаполнение - PullRequest
       2

Rails 3 автозаполнение

1 голос
/ 02 апреля 2011

У меня есть проблемы.Может ли кто-нибудь помочь мне с моей ошибкой?Я использую rams 3 autocomplete gem из https://github.com/mikeauclair/rails3-jquery-autocomplete и следую всем инструкциям, но имею ошибку:

undefined method `autocomplete_user_nickname' for #<Message:0xa09374c>

Мои маршруты:

resources :messages do
   get :autocomplete_user_nickname, :on => :collection
end

MessagesController.rb:

autocomplete  :user, :nickname

Мой new.html.erb:

<% form_for @message, :url => user_messages_path(@user) do |f| %>
  <%= f.text_field :sender_id %>
  <%= f.autocomplete_field :autocomplete_user_nickname, autocomplete_user_nickname_messages_path %>
  <%= f.text_field :subject %>
  <%= f.text_area :body %>
  <%= submit_tag "Send" %>
<% end %>

Что я делаю не так?Спасибо.

Ответы [ 3 ]

5 голосов
/ 02 апреля 2011

В соответствии с файлом Readme в проекте, который вы указали, поле вашей формы неверно.У вас есть:

<%= f.autocomplete_field :autocomplete_user_nickname, autocomplete_user_nickname_messages_path %>

В файле Readme сказано, что оно должно быть:

<%= f.autocomplete_field :user_nickname, autocomplete_user_nickname_messages_path %>

[Изменить]

На основании ваших комментариев, я полагаюу вас есть что-то вроде следующего:

class Message < ActiveRecord::Base
  belongs_to :user
end

class MessagesController
  def new
    @message = Message.new
  end
end

Я думаю, вы должны использовать для своего представления что-то вроде следующего:

<%= form_for(@message) do |f| %>
  <%= f.hidden_field :user_id, :id => "real_user_id"
  To: <%= autocomplete_field_tag 'throwaway_user', '',
          autocomplete_user_nickname_messages_path,
          :size => 75, :id_element => '#real_user_id' %> <br />
  Subject: <%= f.text_field :subject %>
  etc...
<% end %>

Таким образом, поле автозаполнения - это просто некоторые одноразовые данные,но когда он автозаполняется, он обновляет значение real тега идентификатора пользователя (с идентификатором real_user_id) в качестве идентификатора автозаполненного пользователя.

[ДругойEdit]

Так как я не был уверен, в чем проблема после вашего последнего комментария, я решил сделать небольшое приложение самостоятельно.Кажется, он работает нормально для меня, поэтому я предполагаю, что с вашей моделью что-то не так.

Вы можете увидеть, что я сделал, чтобы реализовать это на в этом представлении сравнения GitHub ;Я пропустил скучные вещи, такие как установка jQuery и jQuery UI.Вы можете видеть, что приложение действительно работает на скриншотах в readme .Надеюсь, это поможет.

2 голосов
/ 15 июля 2011

Я думаю, что гораздо лучше, вы используете autocomplete.git.Это работает в Rails 3. Это просто.

https://github.com/rails/auto_complete/pull/9

Но если вы знаете, как использовать драгоценный камень jquery, я прошу вас указать свое решение, и где мы делаем ошибку.

Пока ....

0 голосов
/ 28 июля 2011

На самом деле опция :id_element не работает, и если вы установите с этой github fork , она будет работать

gem 'rails3-jquery-autocomplete', :git => 'git://github.com/juniorz/rails3-jquery-autocomplete.git'

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