刚刚安装了Geocoder并试图让它显示出生命迹象。我希望用户登录并拥有配置文件登录页面以显示其IP上的数据。由于我在开发环境中,这是我尝试临时解决方案:
while(true) {
var x = foo.next();
if(x.done)
break;
yield x;
}
在视图中:
class SessionsController
def create
user = User.authenticate(params[:username_or_email], params[:password])
if user
session[:user_id] = user.id
redirect_to profile_path, :notice => "Logged in!"
@request = Rack::Request.new({'REMOTE_ADDR' => '107.128.188.218'})
@location = @request.location
#blah blah blah
end
我得到的错误是<%= @location.data %>
undefined method 'data' for nil:NilClass
答案 0 :(得分:0)
您在SessionsController的create操作中分配了ivars @request
和@location
,但这些变量的生命周期就是该请求。控制器操作完成后,您将客户端的浏览器重定向到ProfilesController
,因此您需要将这两个分配移动到ProfilesController#show
,然后才能运行。
编辑:由于您说您正在为用户的个人资料使用SessionsController
显示操作,因此将这两个语句移动到该操作方法应该可以解决问题。 : - )