Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用ip地址充当VOU表_Ruby On Rails_Voting_Voting System - Fatal编程技术网

Ruby on rails 使用ip地址充当VOU表

Ruby on rails 使用ip地址充当VOU表,ruby-on-rails,voting,voting-system,Ruby On Rails,Voting,Voting System,我想允许用户在没有注册的情况下对帖子进行投票,并将投票权绑定到他们的ip地址。我试着跟随,但我需要更多的澄清。这是我从posts\U控制器得到的错误 未定义的方法“通过ip查找或创建”# 这是我目前的代码: 邮政署署长: def upvote @post = Post.find (params[:id]) session[:voting_id] = request.remote_ip upvote = session.find_or_create_by_ip(sessi

我想允许用户在没有注册的情况下对帖子进行投票,并将投票权绑定到他们的ip地址。我试着跟随,但我需要更多的澄清。这是我从posts\U控制器得到的错误

未定义的方法“通过ip查找或创建”#

这是我目前的代码:

邮政署署长:

def upvote 
    @post = Post.find (params[:id])
    session[:voting_id] = request.remote_ip
    upvote = session.find_or_create_by_ip(session[:voting_id])
    @post.upvote
    redirect_to :back
  end

  def downvote  
    @post = Post.find (params[:id])
    session[:voting_id] = request.remote_ip
    downvote = session.find_or_create_by_ip(session[:voting_id])
    @post.downvote
    redirect_to :back
  end 
会话模型:

 class session < ActiveRecord::Base
    acts_as_voter
    request.remote_ip
end

在sessions表中添加一个ip列。这到底是什么意思?我还看到了我需要创建db表的地方。是吗?我该怎么做呢?很抱歉不得不发布这篇文章,我对这篇文章还很陌生,所以如果对我来说写得更好,那就太好了。谢谢

如果您使用的是Rails 4+动态查找程序,则已将其提取到。标准是现在或将来

def upvote
@post=post.find(参数[:id])
会话[:投票\u id]=请求.远程\u ip
upvote=Session.find_或create_by(ip:Session[:voting_id])
@投票后
重定向到:返回
结束
def否决票
@post=post.find(参数[:id])
会话[:投票\u id]=请求.远程\u ip
downvote=Session.find_或create_by(ip:Session[:voting_id])
@后否决票
重定向到:返回
结束
类会话
如果您使用的是Rails 4+动态查找程序,则已将其提取到。标准是现在或将来

def upvote
@post=post.find(参数[:id])
会话[:投票\u id]=请求.远程\u ip
upvote=Session.find_或create_by(ip:Session[:voting_id])
@投票后
重定向到:返回
结束
def否决票
@post=post.find(参数[:id])
会话[:投票\u id]=请求.远程\u ip
downvote=Session.find_或create_by(ip:Session[:voting_id])
@后否决票
重定向到:返回
结束
类会话
谢谢,我改了。不过我还是会出错。“未定义的方法‘find_或_create_by’for#”好的,我更改了它,但现在在创建表时出现了一个新错误。“会话(表不存在)的未定义局部变量或方法`request':Class”我将如何创建它?您使用什么进行身份验证?您有创建会话表的迁移吗?感谢所有帮助,但我完全迷路了,我不想再浪费您的时间。您可能应该使用或并将IP地址添加到会话表中。谢谢,我更改了。不过我还是会出错。“未定义的方法‘find_或_create_by’for#”好的,我更改了它,但现在在创建表时出现了一个新错误。“会话(表不存在)的未定义局部变量或方法`request':Class”我将如何创建它?您使用什么进行身份验证?您有创建会话表的迁移吗?感谢所有帮助,但我完全迷路了,我不想再浪费您的时间。您可能应该使用或并将IP地址添加到会话表中。谢谢,我更改了。不过我还是会出错。“未定义的方法‘find_或_create_by’for#”好的,我更改了它,但现在在创建表时出现了一个新错误。“会话(表不存在)的未定义局部变量或方法`request':Class”我将如何创建它?您使用什么进行身份验证?您有创建会话表的迁移吗?感谢所有帮助,但我完全迷路了,我不想再浪费您的时间。您可能应该使用或并将IP地址添加到会话表中。
Rails.application.routes.draw do
  get 'static_pages/home'
  get 'static_pages/about'
  resources :posts do
    member do 
      put "like" , to: "posts#upvote"
      put "dislike" , to: "posts#downvote"
    end
  end
def upvote 
    @post = Post.find (params[:id])
    session[:voting_id] = request.remote_ip
    upvote = Session.find_or_create_by(ip: session[:voting_id])
    @post.upvote
    redirect_to :back
end

def downvote  
  @post = Post.find (params[:id])
  session[:voting_id] = request.remote_ip
  downvote = Session.find_or_create_by(ip: session[:voting_id])
  @post.downvote
  redirect_to :back
end 

class Session < ActiveRecord::Base
  acts_as_voter
  request.remote_ip
end