私はこれらのモデルを持っています
- 問題
- 投票
has_many票を発行し、Votebelongs_toを発行します。投票モデルにはブール投票属性があります。問題のインデックスビューで、問題を順番に表示し、タイトル、本文、賛成票ボタン、反対票ボタン、および現在の賛成票と反対票の数を示すそれぞれのラベルを表示します。これは、issue_idとvote(1または0)の非表示フィールドを持つフォームを使用して行います。Issueモデルのメソッドは、投票をカウントすることになっています。しかし、私は0が返され続けます。Totalvotes_countは機能しますが、他の2つは機能しません。サーバーログに、適切なissue_idとvote valueで投票が作成されているのがわかりますが、何らかの理由でクエリが機能していません。
発行モデル
class Issue < ActiveRecord::Base
attr_accessible :body, :end_at, :title
validates_presence_of :title, :body, :end_at
has_many :votes
def upvotes_count
votes.count(:conditions => "vote = 1")
end
def downvotes_count
votes.count(:conditions => "vote = 0")
end
def totalvotes_count
votes.count
end
end
index.html.erb
<% @issues.each do |issue| %>
<li>
<div class="issue">
<h2><%= issue.title %></h2>
<p><%= issue.body %></p>
<%= form_for(@vote, :remote => true) do |f| %>
<%= f.hidden_field "issue_id", :value => issue.id %>
<%= f.hidden_field "vote", :value => 1 %>
<%= submit_tag issue.upvotes_count.to_s + " Up", :class => 'up-vote' %>
<% end %>
<%= form_for(@vote, :remote => true) do |f| %>
<%= f.hidden_field "issue_id", :value => issue.id %>
<%= f.hidden_field "vote", :value => 0 %>
<%= submit_tag issue.downvotes_count.to_s + " Down", :class => 'down-vote' %>
<% end %>
</div>
</li>
<% end %>
投票コントローラー
class VotesController < ApplicationController
def index
@votes = Vote.find(:all, :include => :issue)
end
def new
@vote = Vote.new(params[:vote])
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @vote }
end
end
def create
@vote = Vote.new(params[:vote])
respond_to do |format|
if @vote.save
format.js
format.html { redirect_to issues_path }
else
format.html { redirect_to issues_path }
end
end
end
end
コントローラを発行します(部分的)
class IssuesController < ApplicationController
# GET /issues
# GET /issues.json
def index
@issues = Issue.all
@vote = Vote.new
respond_to do |format|
format.html # index.html.erb
format.json { render json: @issues }
end
終わり