我有一个名为Book的模型,has_many:photos(通过回形针处理的文件附件)。通过JSON API通过HTTP发布文件附件
我目前正在构建一个客户端,它将使用Paul Dix的Typhoeus gem(它使用libcurl)通过JSON与我的Rails应用程序进行通信。
发布新的Book对象很容易。要创建具有标题一本新书记录“你好”,我可以做这样简单的东西:
require 'rubygems'
require 'json'
require 'typhoeus'
class Remote
include Typhoeus
end
p Remote.post("http://localhost:3000/books.json",
{ :params =>
{ :book => { :title => "Hello There" }}})
我的问题,当我试图将照片添加到该查询开始。只需通过HTML表单提交的文件附件创建一个这样的查询:
Parameters: {"commit"=>"Submit", "action"=>"create", "controller"=>"books", "book"=>{"title"=>"Hello There", "photo_attributes"=>[{"image"=>#<File:/var/folders/1V/1V8Kw+LEHUCKonqJ-dp3oE+++TI/-Tmp-/RackMultipart20090917-3026-i6d6b9-0>}]}}
所以我的假设是我期待重新创建Remote.post调用相同的查询。
我在想,我让散列内的散列数组的语法得到我最好的。我一直在试图做什么,我期待会的工作,这将是类似的变化:
p Remote.post("http://localhost:3000/books.json",
{ :params =>
{ :book => { :title => "Hello There",
:photo_attributes => [{ :image => "/path/to/image/here" }] }}})
但这似乎连接成一个字符串我想要制作成散列,并返回(不管我在做:图像=>“”散列):
NoMethodError (undefined method `stringify_keys!' for "image/path/to/image/here":String):
但我也不想浪费太多时间搞清楚什么是错在这里我的语法,如果这不是无论如何要去上班,所以我想我会来这里。
我的问题是: 我在正确的轨道上吗?如果我清除此语法来发布散列数组而不是奇怪的连接字符串,是否应该足以将图像传递到Book对象?
还是我接近这个错误?
这是一个非常有趣的观点,但是这个客户端不是基于浏览器的应用程序,因此不幸的是,iframe是不可能的。 – btw 2009-09-18 01:38:15