0

私は Reddit クローンの作成に関する schneems の優れたRails チュートリアルの紹介に従っており、質問だけでなくコメントにも機能するように「投票」構造を拡張したいと考えており、両方のコントローラーに渡す方法を理解するのに苦労していました。question_idそのcomment_idため、使用を のみに制限するのではなく、それに応じて賛成または反対の投票を行うことができquestion_idます。

現在、 myには次のように定義されたcreate関数のみがあります。VotesController

  def create
    @vote = Vote.where(:question_id => params[:vote][:question_id], :user_id => current_user.id).first #the question_id is baked right in.. 
    if @vote
      @vote.up = params[:vote][:up]
      @vote.save
    else
      @vote = current_user.votes.create(params[:vote])
    end
    redirect_to :back
  end

ご協力いただきありがとうございます!

4

1 に答える 1

1

コメントに投票しようとすると、 の代わりに がparams[:vote]含まれているはずですよね?:comment_id:question_id

したがって、whereステートメントは次のいずれかである必要があります

# for a question
where(:question_id => params[:vote][:question_id], :user_id => current_user.id)

# for a comment
where(:comment_id => params[:vote][:comment_id], :user_id => current_user.id)

if をチェックするなど、さまざまな方法でこれにアプローチしますparams[:vote].has_key?(:question_id)が、簡単なオプションは を使用することHash#sliceです。

where(params[:vote].slice(:question_id, :comment_id).merge(:user_id => current_user.id))
于 2013-01-18T23:00:06.993 に答える