首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对两个不同的对象使用相同的"Voting“控制器操作

对两个不同的对象使用相同的"Voting“控制器操作
EN

Stack Overflow用户
提问于 2013-01-19 06:45:11
回答 1查看 105关注 0票数 0

我正在跟随schneems关于创建Reddit克隆的Rails tutorial的伟大介绍,并想扩展“投票”结构,不仅适用于问题,也适用于评论,并且很难弄清楚如何将question_idcomment_id都传递到控制器中,以便它可以相应地投票赞成或反对,而不是将使用限制为只使用question_id

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

代码语言:javascript
复制
  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

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-19 07:00:07

那么,当您尝试对评论进行投票时,这意味着params[:vote]应该包含:comment_id而不是:question_id,对吧?

因此,您的where语句需要

代码语言:javascript
复制
# 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

代码语言:javascript
复制
where(params[:vote].slice(:question_id, :comment_id).merge(:user_id => current_user.id))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14408866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档