Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails将JavaScript对象存储到模型的有效方法?_Javascript_Ruby On Rails_Filepicker.io - Fatal编程技术网

Rails将JavaScript对象存储到模型的有效方法?

Rails将JavaScript对象存储到模型的有效方法?,javascript,ruby-on-rails,filepicker.io,Javascript,Ruby On Rails,Filepicker.io,我使用的是FileStack API和文件选择器gem()。我有一个附件模型,它以:title作为字符串。上载文件时,FilePicker API中的URL存储为:title。但是gem有一个onchange方法,它将事件变量作为包含文件属性的JSON对象返回。我使用JavaScript访问这些属性,但我想在Rails中找到一种方法,将通过JavaScript访问的属性存储在一个模型中,这样我就可以通过Rails应用程序的其余部分访问这些属性 <%= filepicker_js_inclu

我使用的是FileStack API和文件选择器gem()。我有一个附件模型,它以:title作为字符串。上载文件时,FilePicker API中的URL存储为:title。但是gem有一个onchange方法,它将事件变量作为包含文件属性的JSON对象返回。我使用JavaScript访问这些属性,但我想在Rails中找到一种方法,将通过JavaScript访问的属性存储在一个模型中,这样我就可以通过Rails应用程序的其余部分访问这些属性

<%= filepicker_js_include_tag %>

<%= simple_form_for(@attachment) do |f| %>

<%= f.filepicker_field :title, onchange: 'onUpload(event)' %>
<%= f.submit %>

<% end %>

<script>
 function onUpload(event) {
 console.log(event);
 var name = event.fpfile.filename;
 console.log(name);
}
</script>
控制器

def index
    @attachments = Attachment.all
    @foo = params[:data_value]
end
视图(返回零)



< /代码> 如果您使用的是<代码> PoxGrices 9.3 < /代码>或以上,您应该考虑使用<代码> HSturt模块,并创建一个<代码> JSON 列。在迁移中,您可以执行以下操作:

add_column :your_model, :your_attribute, :json
然后你可以只更新
YourModel.your_属性=>{'your':'JSON here'}

此处的文档:


如果您使用的是
MySQL
,这很棘手,但可行。您必须创建一个文本列,将
JSON
保存为字符串,并在每次与它交互时解析它。Postgres在处理
JSON
方面肯定更出色。我知道这个答案取决于一个假设,因此如果您没有使用上述两个数据存储中的一个,请告诉我,我会将其下拉。

谢谢您的建议。我用postgres,因为我用的是Heroku。那么,如何传入我在上面的函数中获得的JavaScript对象呢?变量名?您必须将其发布到路由,并设置控制器操作以查找有问题的对象并更新属性。您不能仅使用Javascript进行此操作。某些功能正在工作,因为这发生在AttachmentsController的终端
处理中#创建为*/*参数:{“data\u value”=>“discussion\u technology.doc”}
我在索引操作中定义了@foo=params[:data_value],但当我试图通过index.html.erb中的查看其内容时,它是nil。不知道我错过了什么。我还更新了我的路线如下
post'attachments/:data_value'=>“attachment#index”
。我需要有关如何通过路由将数据_值正确发送到索引控制器的帮助。谢谢另外,我认为你超出了原始问题的范围。您可能应该为该功能请求一个新的。
def index
    @attachments = Attachment.all
    @foo = params[:data_value]
end
<%= raise @foo.inspect %>
add_column :your_model, :your_attribute, :json