Вопрос об автозаполнении - Ruby on Rails - PullRequest
0 голосов
/ 14 апреля 2010

Я создал очень простое приложение для блога, используя Ruby on Rails. Новичок в Ruby и Rails, так что извините за глупые вопросы.

В настоящее время у меня есть две таблицы, которые относятся к этому вопросу. У меня есть таблица сообщений и таблица тегов. В основном я настроил его так, чтобы Post has_many :tags и Tag belongs_to :post. Я использую AJAX для обработки и отображения тегов в представлении представления сообщения.

Я установил плагин auto_complete и получаю сообщение об ошибке при вводе букв в text_field_with_auto_complete для создания тега. Я подозреваю, что это потому, что форма представляет собой remote_form_for или что-то, что я делаю неправильно в маршрутах. Вот ошибка и код:

Error

Processing PostsController#show (for 127.0.0.1 at 2010-04-13 23:25:46) [GET]
  Parameters: {"tag"=>{"tag_name"=>"f"}, "id"=>"auto_complete_for_tag_tag_name"}
  Post Load (0.1ms)   SELECT * FROM "posts" WHERE ("posts"."id" = 0) 

ActiveRecord::RecordNotFound (Couldn't find Post with ID=auto_complete_for_tag_tag_name):
  app/controllers/posts_controller.rb:22:in `show'

Rendered rescues/_trace (26.0ms)
Rendered rescues/_request_and_response (0.2ms)
Rendering rescues/layout (not_found)

remote_form_for находится в /views/posts/show.html.erb

<% remote_form_for [@post, Tag.new] do |f| %>
    <p>
        <%= f.label :tag_name, "Tag" %><br/>
        <%= text_field_with_auto_complete :tag, :tag_name, {}, {:method => :get} %>
    </p>
    <p><%= f.submit "Add Comment" %></p>
<% end %>

tags_controller.rb (я избавлю вас от всех действий, но добавил следующее здесь)

auto_complete_for :tag, :tag_name

routes.rb

  map.resources :posts, :has_many => :comments
  map.resources :posts, :has_many => :tags
  map.resources :tags, :collection => {:auto_complete_for_tag_tag_name => :get }

1 Ответ

0 голосов
/ 14 апреля 2010
ActiveRecord::RecordNotFound (Couldn't find Post with ID=auto_complete_for_tag_tag_name):
  app/controllers/posts_controller.rb:22:in `show'

Это показывает, что rails ищет метод "auto_complete_for_tag_tag_name" в контроллере сообщений, поэтому либо измените маршруты map.resources :posts, :collection => {:auto_complete_for_tag_tag_name => :get } OR

Change remote form so that it should call method   
"/tags/auto_complete_for_tag_tag_name"
    instead of  
"/posts/auto_complete_for_tag_tag_name"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...