J'ai créé une application de blog très simple en utilisant Ruby on Rails. Nouveau à la fois Ruby et Rails donc excusez les questions stupides. J'ai actuellement deux tables qui se rapportent à cette question. J'ai une table Post et une table Tag. Fondamentalement, je l'ai mis en place tel que Post has_many :tags
et Tag belongs_to :post
. J'utilise AJAX pour traiter et afficher les tags dans la vue de la publication.Question d'erreur de saisie semi-automatique - Ruby on Rails
J'ai installé le plugin auto_complete et j'obtiens une erreur lorsque je saisis les lettres dans le champ text_field_with_auto_complete pour la création d'un tag. Mon soupçon est que c'est parce que le formulaire est une remote_form_for ou quelque chose que je fais mal dans les routes.rb. Voici l'erreur et le code:
Erreur
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 situé dans /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 (je vous épargne tous les actions mais il a ajouté ce qui suit ici)
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 }
n'oubliez pas redémarrez votre serveur après avoir modifié le fichier enviorment.rb ou routes.rb – Salil
Merci Salil, je l'ai déjà fait et pas de dés. Bon conseil cependant parce qu'il m'a fallu une minute pour m'en souvenir. – bgadoci