On 6 Mar 2011, at 21:51, Alberto Santini <[email protected]> wrote:

> 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:

Is your page loading the appropriate version of rails.js


> 
> ## 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 [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/rubyonrails-talk?hl=en.
> 

-- 
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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to