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