1

私はレールが初めてで、今学ぼうとしているので、誰かが助けてくれることを願っています.

1対多の関係を持つユーザー、意見、投票の3つのモデルがあります。それぞれuser has_many :opinionshas_many :votes. それぞれopinion has_many :votesbelongs_to :user. それぞれvote belongs_to userbelongs_to opinion. 投票テーブルには、:decision (ブール値)、:opinion_id、:user_id の列があります。意見テーブルには :content 列しかありません。

私の使用例は、ユーザーが意見を追加し、他のユーザーが各意見を表示するときに同意または反対することができるというものです (ビューを表示)。

意見表示ビューで、「同意する」と「同意しない」の2つの送信ボタンが必要です。ユーザーが投票を送信したら、この投票 (true または false) を作成し、votes テーブルの user_id フィールドと Opinion_id フィールドの両方を更新する必要があります。私は各親に対して個別にそれを行うことができましたが、同じ投票に対して両方ではありませんでした. どんな助けでも大歓迎です。

4

1 に答える 1

0

両方の ID を隠しフィールドとして含めます。

意見表示ビュー:

<%= form_for(@vote) do |f| %>
<%=   f.hidden_field :user_id, :value => @user.id %>
<%=   f.hidden_field :opinion_id, :value => @opinion.id %>
<%=   submit_tag 'Agree', :name => 'agree_button' %>
<%=   submit_tag 'Disagree', :name => 'disagree_button' %>
<% end %>`

投票管理者:

def create
  @vote = Vote.new(params[:vote])
  if params[:agree_button]
    @vote.agreement = 1
  elsif params[:disagree_button]
    @vote.agreement = -1
  end
  flash[:notice] = "Thank you for your vote." if @vote.save
  redirect_to( opinion_path( @vote.opinion_id )) 
end
于 2011-07-20T11:00:52.463 に答える