如何将数据从Matlab发送到Rails [英] How to send data from Matlab to Rails
问题描述
我对Rails和Web开发非常陌生.
I'm very new to Rails and web development.
我正在Matlab中生成一堆对象,我想将这些对象发送到我的Rails应用程序中的数据库中.谁能建议我该怎么做?
I'm generating a bunch of objects in Matlab and I'd like send these objects to a database in my Rails app. Can anyone advise me on how to do this?
到目前为止,在Rails端,我已经为我的数据生成了基本的脚手架.我可以使用"/myobjects/new"中的表单将对象添加到数据库中.
So far, on the Rails end, I've generated basic scaffolding for my data. I can add objects to my database using a form at '/myobjects/new'.
在Matlab端,我一直在尝试使用HTTP POST请求添加对象,例如:
On the Matlab end, I've been trying to add objects using HTTP POST requests, like so:
s = urlread('http://localhost:3000/myobjects.json','POST',{'myobject','{name1:''value1''}'})
这将失败,并将以下内容打印到Rails控制台:
This fails and prints the following to the Rails console:
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'
这种方法可能不合时宜,但是希望上面的代码可以使我的目标明确.谁能告诉我如何修复我的代码,或提出更好的策略来使我的数据进入轨道?
This approach might be way off base, but hopefully the code above makes my goal clear. Can anyone tell me how to fix my code, or suggest a better strategy for getting my data into rails?
编辑
此刻,我的new和create方法看起来像这样(但是我可以根据需要更改它们)
At the moment my new and create methods look like this (but I can change them as required)
# 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
推荐答案
最后,我放弃了尝试使用matlab的内置函数来实现此目的.相反,我导入了Java库( Apache HttpComponents ).这是我想出的脚本.这完成了工作.
In the end I gave up trying to do this with matlab's built-in functions. Instead, I imported a Java library (Apache HttpComponents). Here's the script I came up with. This did the job.
javaaddpath(['utils/httpcomponents-client-4.2/lib/httpcore-4.2.jar']);
javaaddpath(['utils/httpcomponents-client-4.2/lib/httpclient-4.2.jar']);
import org.apache.http.impl.client.DefaultHttpClient
import org.apache.http.client.methods.HttpPost
import org.apache.http.entity.StringEntity
httpclient = DefaultHttpClient();
httppost = HttpPost('http://127.0.0.1:3000/myobjects.json');
httppost.addHeader('Content-Type','application/json');
httppost.addHeader('Accept','application/json');
params = StringEntity('{"field1":"value1"}');
httppost.setEntity(params);
response = httpclient.execute(httppost);
这篇关于如何将数据从Matlab发送到Rails的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!