Rails: link_to appels de méthode personnalisée dans le contrôleur

Je cherche à utiliser link_to d'appeler une méthode dans mon contrôleur. Cependant, pour une raison étrange, la route semble pour le show méthode.

De mon point de vue:

<% @beverages.each do |beverage| %>
    ..
    <%= link_to 'Archive', beverages_archive_path(:id => beverage.id) %>
    ..
<% end %>

Dans ma config/routes.rb

match 'beverages/archive' => 'beverages#archive'

Dans mon beverages_controller.rb

  def archive
    beverage = Beverage.find(params[:id])

    respond_to do |format|
    #  format.html # show.html.erb
      format.json { render json: beverage }
    end
    # beverage.update_attribute('archive', true)
  end

Quand je clique sur le lien archives dans la vue, l'URL ne change pas: http://localhost:3000/beverages/archive?id=11, mais j'ai l'erreur suivante.

L'erreur que je reçois:
Rails: link_to appels de méthode personnalisée dans le contrôleur
ActiveRecord::RecordNotFound (impossible de trouver la Boisson id=archive):
app/controllers/beverages_controller.rb:46:dans "show"

Aucune idée sur ce que je fais de mal? Votre aide est très appréciée!

PS. J'ai également regardé Rails 3 link_to supprimer destory les appels de méthode méthode show?
mais rien ne semblait fonctionner.

Pourriez-vous montrer votre routes.rb? Vous avez probablement quelque chose comme resources :beverages ci-dessus correspondent à la ligne?
Doublon potentiel de stackoverflow.com/questions/3738573/...

OriginalL'auteur Rahul | 2013-01-10