导轨上的红宝石 - 对两个不同的对象使用相同的"Voting"控制器操作



我遵循schneems的伟大介绍Rails教程创建一个Reddit克隆,并希望扩展"投票"结构的工作不仅为问题,但对于评论以及,并有困难搞清楚如何传递到控制器既question_idcomment_id,所以它可以投票赞成或反对,而不是限制使用仅question_id

目前,我的VotesController中只有一个create函数,定义如下:

  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

谢谢你的帮助!

嗯,当你试图对评论进行投票时,这意味着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)

您可以通过各种方式来实现这一点,例如检查params[:vote].has_key?(:question_id),但一个简单的选择是使用Hash#slice:

where(params[:vote].slice(:question_id, :comment_id).merge(:user_id => current_user.id))

相关内容

  • 没有找到相关文章

最新更新