【发布时间】:2025-12-14 21:35:01
【问题描述】:
我对 Rails 和 Web 开发非常陌生。
我在 Matlab 中生成了一堆对象,我想将这些对象发送到我的 Rails 应用程序中的数据库。谁能建议我如何做到这一点?
到目前为止,在 Rails 端,我已经为我的数据生成了基本的脚手架。我可以使用“/myobjects/new”中的表单将对象添加到我的数据库中。
在 Matlab 端,我一直在尝试使用 HTTP POST 请求添加对象,如下所示:
s = urlread('http://localhost:3000/myobjects.json','POST',{'myobject','{name1:''value1''}'})
这失败并在 Rails 控制台打印以下内容:
Started POST "/myobjects.json" for 127.0.0.1 at 2012-06-16 11:48:28 -0400
Processing by MyobjectsController#create as JSON
Parameters: {"myobject"=>"{name1:'value1'}"}
WARNING: Can't verify CSRF token authenticity
Completed 500 Internal Server Error in 1ms
NoMethodError (undefined method `stringify_keys' for "{name1:'value1'}":String):
app/controllers/myobjects_controller.rb:43:in `new'
app/controllers/myobjects_controller.rb:43:in `create'
这种方法可能有点离谱,但希望上面的代码能明确我的目标。谁能告诉我如何修复我的代码,或者建议一个更好的策略来将我的数据放入 Rails 中?
编辑
目前我的 new 和 create 方法看起来像这样(但我可以根据需要更改它们)
# GET /irs/new
# GET /irs/new.json
def new
@ir = Ir.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @ir }
end
end
# POST /irs
# POST /irs.json
def create
@ir = Ir.new(params[:ir])
respond_to do |format|
if @ir.save
format.html { redirect_to @ir, notice: 'Ir was successfully created.' }
format.json { render json: @ir, status: :created, location: @ir }
else
format.html { render action: "new" }
format.json { render json: @ir.errors, status: :unprocessable_entity }
end
end
end
【问题讨论】:
-
您可以发布新内容并创建您的帖子吗?
-
好的,见上面的编辑。这是您要查找的信息吗?
-
也许使用 sprintf 创建 name1: value1 对,然后发送该字符串?
-
@Ansari 谢谢,但没有骰子。在 Matlab
s = urlread('http://localhost:3000/irs.json','POST',{'ir',sprintf('{%s:%s}','field1','value1')})中做了这个并得到了这个NoMethodError (undefined method ``stringify_keys' for "{field1:value1}":String) -
JSON 不是我的强项,但我认为您必须将它们括在单引号或双引号中。所以试试 '{"%s":"%s"}'。
标签: ruby-on-rails json web-services matlab