【发布时间】:2016-05-13 19:41:58
【问题描述】:
我正在使用 FileStack API 和文件选择器 gem (https://github.com/Ink/filepicker-rails)。我有一个 :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>
更新:
因此,在查看您的解决方案并四处搜索后,我正在使用 ajax 通过路由将数据发送到控制器。下面是我更新的 Javascript 以及路由和控制器。当我渲染和检查 @foo 实例变量时,它是 nil。所以我的数据没有正确传递。此外,从触发 Javascript 函数到显示索引视图的整个过程现在非常非常缓慢。在查看您的解决方案并进行更多挖掘之后,我认为我的想法是正确的,但我遗漏了一些东西和/或使这变得过于复杂。任何建议将不胜感激。
<script>
function onUpload(event) {
var name = event.fpfile.filename;
jQuery.ajax({
data : { data_value: event },
type: 'post',
url: "/attachment/index"
});
}
</script>
路线
post 'attachments/' => 'attachment#index'
控制器
def index
@attachments = Attachment.all
@foo = params[:data_value]
end
查看(返回零)
<%= raise @foo.inspect %>
【问题讨论】:
标签: javascript ruby-on-rails filepicker.io