我有一个名为 Book 的模型,它有_many :photos(由回形针处理的文件附件)。
我目前正在构建一个客户端,它将通过 JSON 与我的 Rails 应用程序通信,使用 Paul Dix 的Typhoeus gem,它使用 libcurl。
发布一个新的 Book 对象很容易。要创建标题为“Hello There”的新图书记录,我可以执行以下简单操作:
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" }] }}})
但这似乎将我想要制作的哈希连接成一个字符串,然后返回(无论我在 :image => "" 哈希中做什么):
NoMethodError (undefined method `stringify_keys!' for "image/path/to/image/here":String):
但是我也不想浪费太多时间来弄清楚我的语法有什么问题,如果这无论如何都行不通,所以我想我会来这里。
我的问题是: 我在正确的轨道上吗?如果我清除此语法以发布哈希数组而不是奇怪的串联字符串,那是否足以将图像传递到 Book 对象?
还是我接近这个错误?