Hi! I'm developing a test application, just to experiment a little bit
with ajax. Right now I only have a Company model with the attributes
name:string, description:text and voted:boolean. What I'm trying to do
is: in company#index show a "vote" link to vote a company; after the
company has been voted the link should be replaced by an "unvote" link
to unvote it and so on (after unvoting replace with "vote", etc.).
>From what I have read so far I expect the following code to work just
fine:

## app/controllers/companies_controller.rb
class CompaniesController < ApplicationController
  before_filter :retrieve_company, :only => [:vote, :unvote]

  def index
    @companies = Company.all
  end

  def vote
    @company.update_attributes :voted => true
  end

  def unvote
    @company.update_attributes :voted => false
    respond_to do |format|
      format.js { render "vote" }
    end
  end

  private
    def retrieve_company
      @company = Company.find(params[:id])
    end
end


## app/helpers/companies_helper.rb
module CompaniesHelper
  def vote_link_for(company)
    if company.voted?
      link_to "Unvote", unvote_company_path(company), :id =>
"vote_link", :remote => true, :method => "delete"
    else
      link_to "Vote", vote_company_path(company), :id => "vote_link",
:remote => true, :method => "post"
    end
  end
end

## app/views/companies/vote.js.erb
$("#vote_link").html("<%= vote_link_for(@company) %>")

## app/views/companies/_company.html.haml
%tr
  %td= company.name
  %td= company.description
  %td= vote_link_for(company)

## config/routes.rb
[...]
root :to => "companies#index"
resources :companies do
  member do
    post :vote
    delete :unvote
  end
end

The problem is that the server receives GET requests instead of POST and
DELETE:

Started GET "/companies/1/vote" for 127.0.0.1 at 2011-03-06 22:27:37
+0100

So I receive a Routing Error because I don't have any GET route for
:vote and :unvote.
What am I doing wrong?

Thanks for your time and help.

-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to