在我目前的应用程序中,我使用Geocoder gem来获取访客的城市和国家。我在视图中使用隐藏字段来获取这些细节。提交登录表单后,这些详细信息将发送到控制器,控制器将把它们保存到数据库中。当我尝试使用
直接从控制器获取这些细节时 request.location.city
它将为数据库分配一个空白值。如果我在视图中使用隐藏字段,有人可以正确使用它们吗?那么,我该如何解决这个问题?
答案 0 :(得分:0)
您应该在呈现任何内容之前存储访问者信息:
class UsersController
def new
# I suspect that, for fast insert, you should probably use a NoSQL database
# to perform `store!` or even just write it to a log file
Visitor.store!(:city => request.location.city, :ip => request.ip)
end
def create
@user = User.build(params[:user].merge(:city => request.location.city))
if @user.valid?
@user.save
flash[:notice] = "You've been registered!"
redirect_to user_dashboard_path
else
flash[:notice] = "Couldn't register your account"
render action: "new"
end
end
end