如何将我的网站http://yocoro.com/public中的信息保存到我的数据库中? 只需转到页面
PS:我正在使用2个宝石地理编码器和用户代理来获取这些信息。
//controller
class PublicController < ApplicationController
def index
@time = Time.now
@user_agent = request.env['HTTP_USER_AGENT']
end
end
//view
<%= request.ip %>
<%= request.location.city %>
<%= request.location.country_code %>
<%= @user_agent %>
答案 0 :(得分:0)
最基本的是,Rails允许您将各个HTTP路径映射到特定控制器中的特定方法:
get '/record_ip' => 'public#index'
这将匹配以/record_ip
开头的任何网址,并使用index
中PublicController
方法中该请求中的参数。
在index
内,您可以通过模型访问数据库,从而做任何您想做的事情(当然,您也可以通过系统上的Ruby做任何您想做的事情。)当你'完成后,您需要使用respond_to
和render
来决定要生成的输出。如果您没有明确调用render
,Rails将搜索与控制器和方法名称对应的模板,这可能不是您想要的:
def index
// Do something to the database
// Your query parameters sent via a GET requests will be in the params hash
respond_to do |format|
format.json { render json: {'status' => "success"} }
end
end
现在您可以发出类似http://yourserver.com/matchip?param1=val1
的HTTP GET请求。请注意,Rails不需要您拥有模型 - 实际上您可以使用SQL库执行所有数据库操作。
当然,这只是Rails路由和响应的最简单方面。在这个小提示下面有一个巨大的冰山供你探索。如果这就是你所做的一切,也许Rails对你来说太过分了?只需使用自定义PHP脚本,您就可以非常简单地操作数据库。
答案 1 :(得分:0)
根据@meager的输入,我可以减少这种方式。
创建一个模型和适当的表来使用它
rails generate model location ip:text city:text country:text user_agent:text
然后在您的索引操作中将信息放在一起并存储它:
def index
@ip = ip_param
# Here is where you use the IP address and the geocoder gem to gather the
# info from the ip address. Then create the location object and save it.
@location = Location.new
@location.ip = @ip
@location.city = city
@location.country = country
@location.user_agent = request.env['HTTP_USER_AGENT']
@location.save
end
这是我最终如何做到的.. 我尝试了之前它没有工作,但我终于理解为什么,我的旧代码了 “@location = location.new”字母-l-是小写的,并且在我改为“@location = Location.new”bingo bango之后,导轨给我一个错误!!!。
非常感谢大家。!!!
@location = Location.new
@location.ip = request.ip
@location.city = request.location.city
@location.country = request.location.country_code
@location.user_agent = request.env['HTTP_USER_AGENT']
if @location.save
flash[:notice] = 'Location save'
else
flash[:notice] = 'Location did not save'
end