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.