Add a vote method to the Poll model in plugins/redmine_polls/app/models/poll.rb:

def vote(answer)
  increment(answer == "yes" ? :yes : :no)
end

Create a vote action for the PollsController in plugins/redmine_polls/app/controllers/polls_controller.rb:

def vote
  @poll.vote params[:answer]
  flash[:notice] = "Voted #{params[:answer]}" if @poll.save && !request.xhr?
  respond_with(@poll) do |format|
    format.js { render action: :show }
  end
end

Create a member route in plugins/redmine_polls/config/routes.rb for the new vote action:

scope "/projects/:project_id" do
  resources :polls do
    post "vote", on: :member
  end
end

Add the vote method to the respond_to :js and before_filter :find_poll statements:

respond_to :js, only: [:show, :new, :create, :edit, :update, :destroy, :vote]
# ...
before_filter :find_poll, only: [:show, :edit, :update, :destroy, :vote]

Add voting links to plugins/redmine_polls/app/views/polls/show.html.erb:

<p>
  <b>Vote:</b>
  <%= link_to "Yes", vote_poll_path(@poll, answer: "yes"), method: :post %> |
  <%= link_to "No", vote_poll_path(@poll, answer: "no"), method: :post %>
</p>

And basically the same for plugins/redmine_polls/app/views/polls/show.js.erb but using remote: true for AJAX links:

<p>
  <b>Vote:</b>
  <%= link_to "Yes", vote_poll_path(@poll, answer: "yes"), method: :post, remote: true %> |
  <%= link_to "No", vote_poll_path(@poll, answer: "no"), method: :post, remote: true %>
</p>

Finally, add a :vote_polls Redmine permission to the :polls project module in plugins/redmine_polls/init.rb:

  project_module :polls do
    # ...
    permission :vote_polls, polls: [:vote]
  end