Ruby on rails 使用ip地址充当VOU表
我想允许用户在没有注册的情况下对帖子进行投票,并将投票权绑定到他们的ip地址。我试着跟随,但我需要更多的澄清。这是我从posts\U控制器得到的错误 未定义的方法“通过ip查找或创建”# 这是我目前的代码: 邮政署署长: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
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