在 Rails 网站上将 –F 卷曲到 Ruby

Curl –F to Ruby on Rails website

我得到了一个要修复的网站,该网站似乎使用 Curl –F 语句将文本文件的内容从服务器传递到网站,该网站写在 Ruby 上 [=31] =].当它被发送到网站时,会触发一些应该更新成员 MySQL 数据库的东西。

不幸的是,我从未在 Rails 或 Curl 语句上使用过 Ruby,所以我有一个学习曲线。

我在 rails 中找到了控制器,它应该完成更新数据库的所有工作,但我找不到触发控制器所需的内容。

curl 语句指向的网站目录中没有任何内容,我收到 404 错误,指出找不到该页面。那里应该有一个页面吗?

如何让控制器触发和更新数据库?

一些代码:

Curl 语句

# push to website 
curl -F token=tysh982k8s -F data=@/directorypath/to/memberinfo.txt http://www.website.com/api/member/update

控制器

class Api::MembersController < ApplicationController
 def update
response_string = ""
response_status = ""
sent_members = []

if params[:token] == 'tysh982k8s'
  response_status = "OK"
  member_data = params[:data].read

  # Parse the line
  member_data.split(/\r?\n/).each do |l|
    new_attributes = Member.attributes_from_string(l)
    sent_members << new_attributes[:account_number]
    current_member = Member.where(:account_number=>new_attributes[:account_number]).first

控制器通过 Curl 语句生成的 HTTP GET 请求触发。要更新网站,您需要 运行 curl 命令。

curl 语句正在传递 2 个参数令牌 = 'tysh982k8s'(其作用与密码类似)

和数据参数,其中包含来自将用于更新数据库的文件的信息。

该位置不会有页面。 Rails方法如下

HTTP 请求 -> config/routes.rb 该文件确定将网址转发到哪个控制器。 IE。在这种情况下,GET 'members/update' => 'members#update' 将地址 'members/update' 转发到成员控制器中的更新函数。

会员控制器 控制器获取令牌和数据变量,通过 params[:token]、params[:data] 访问它们,控制器负责与数据库对话。它可以获取这些参数并更新数据库。

如果您不想使用 curl 而是想通过网络浏览器触发更新,您应该可以使用 'http://www.website.com/members/update?token=tysh982k8s&data='data string'