0

在 Rails 3.2 应用程序中,我有一个咖啡脚本函数,其中包含一个 POST 以创建带有附件的资产(使用 Carrierwave)

link = url_to_file
parent = $('#dom_obj').data('id')
$.post( url, { remote_file_url: link, parent_id: parent } )

这给出了以下日志:

Started POST "/assets" for 127.0.0.1 at 2013-10-05 14:53:57 +0700
Processing by AssetsController#create as JS
  Parameters: {"remote_file_url"=>"https://the/correct/path", "parent_id"=>"520"}

在控制器中

@asset = Asset.new(params[:asset])
@asset.save

我还有其他一些创建资产的方法,它们都可以正常工作。传递给这个 ajax 调用的变量也是正确的。但是 @asset.save 由于上传程序中的错误而失败,这意味着 parent_id 设置不正确。

由于这项工作的所有组件都通过其他上传路径完美工作,我唯一的结论是 jquery ajax 调用不正确,我想我没有正确设置参数(我的控制器中的 params[:asset] 会正确解释参数上面记录?)。

如何将参数传递给 javascript 帖子,以便 Rails 正确解释它们?任何指导都非常感谢,因为我正在兜圈子!

4

1 回答 1

1

从您提供的日志中,您的 POST 调用没有提供名为 params[:asset] 的东西。所以,在你的控制器中这样做是可行的

@asset = Asset.new(params)
@asset.save

或者如果这不起作用,您可以尝试

@asset = Asset.new(:remote_file_url => params[:remote_file_url], :parent_id => params[:parent_id])
@asset.save

或者另一种解决方案是不更改您的控制器,而是将您的 html 中的表单输入名称更改为asset[remote_file_url]asset[parent_id]

于 2013-10-05T08:11:46.853 回答