Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 有没有办法让城市和国家的游客进入Rails控制器?_Ruby On Rails_Ruby On Rails 4_Rails Geocoder - Fatal编程技术网

Ruby on rails 有没有办法让城市和国家的游客进入Rails控制器?

Ruby on rails 有没有办法让城市和国家的游客进入Rails控制器?,ruby-on-rails,ruby-on-rails-4,rails-geocoder,Ruby On Rails,Ruby On Rails 4,Rails Geocoder,在我当前的应用程序中,我使用Geocoder gem获取访客所在的城市和国家。我在视图中使用隐藏字段来获取这些详细信息。提交登录表单后,这些详细信息将发送给控制器,控制器将其保存到数据库中。当我试图通过使用直接从控制器获取这些详细信息时 request.location.city 它将为数据库分配一个空白值。如果我在视图中使用隐藏字段,有人可以对它们进行调整,对吗?那么,我如何解决这个问题呢?在呈现任何内容之前,您应该存储访问者信息: class UsersController def

在我当前的应用程序中,我使用Geocoder gem获取访客所在的城市和国家。我在视图中使用隐藏字段来获取这些详细信息。提交登录表单后,这些详细信息将发送给控制器,控制器将其保存到数据库中。当我试图通过使用直接从控制器获取这些详细信息时

 request.location.city

它将为数据库分配一个空白值。如果我在视图中使用隐藏字段,有人可以对它们进行调整,对吗?那么,我如何解决这个问题呢?

在呈现任何内容之前,您应该存储访问者信息:

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

您是否尝试使用非隐藏字段进行调试?实际上,我需要获取登录页面的所有访问者的详细信息。然后您需要通过
new
方法,而不是通过
create
方法来登录。我会更新我的答案。