Railsアプリに投票フォームをロードするパーシャルがあります(1〜5の範囲の数字を選択するだけです)。ユーザーがすでに投票した場合にロードする別のパーシャルを作成しています。これは、投票した値を選択し、必要に応じて変更できる EDIt パーシャルであると想定されます。しかし、何らかの理由で機能していません。これがそのコードです。
#Finds the vote by passing the user and the article
<%= @vote = Vote.find_vote_by(current_user,@article) %>
#Renders the partial with the vote variable loaded up with the vote that was found
<%= render :partial => "votes/edit_vote", :locals => {:vote => @vote} %>
そしてこれがパーシャル
<% form_for(vote, :url => {:controller => 'votes', :action => 'edit'}) do |f| %>
<%= error_messages_for :vote %>
<p><%= f.hidden_field :article_id %></p>
<p>
<%= f.label :value, "Value for the vote: "%>
<%= f.select :value, {"1" => "1","2" => "2","3" => "3","4" => "4", "5" => "5"}, :selected => vote.value %>
</p>
<p>
<%= f.submit "Cloud-it!" %>
</p>
<% end %>
しかし、何らかの理由で、投票変数には article_id や value メソッド以外のものが含まれていません。何かアイデアはありますか?
EDIT1:リクエストごとに、デバッグ@voteが出力しているものは次のとおりです(実際には正しい値です)
attributes:
created_at: 2010-09-02 14:39:04
updated_at: 2010-09-02 14:39:04
id: 1
value: 4
article_id: 1
user_id: 1
attributes_cache: {}
EDIT2
これを出力するために、部分的なコードをクリアしようとしました:
<%= debug @vote%>
<%= @vote.value %>
@vote をデバッグすると、すべての属性などは完璧になります。しかし、2行目を追加するたびに、.valueがないことがわかり、.id、.articleを試してみましたが、存在しないかのようには何もありません。何か案は?
EDIT3
さんの投票はこちら
named_scope :find_vote_by, lambda {|user,article| {:conditions => {:user_id => user, :article_id => article}}}