私はFileStack APIとファイルピッカー宝石(https://github.com/Ink/filepicker-rails)を使用しています。私は文字列としてタイトルを持つAttachmentモデルを持っています。ファイルがアップロードされると、FilePicker APIのURLは:titleとして格納されます。しかし、この宝石には、ファイルの属性を含むJSONオブジェクトとしてイベント変数を返すonchangeメソッドがあります。私はJavaScriptを使ってこれらの属性にアクセスしますが、JavaScriptを介してモデルにアクセスしてこれらの属性を格納する方法を探して、残りのRailsアプリケーションからアクセスできるようにしたいと考えています。モデルにJavaScriptオブジェクトを効率的に格納する方法を教えてください。
<%= 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
ビュー(はnilを返す)
<%= raise @foo.inspect %>
アドバイスをいただきありがとうございます。私はHerokuを使っているので、私はpostgresを使用します。では、上記の関数で取得したJavaScriptオブジェクトをどのように渡しますか?変数名は? – user3318660
あなたはそれをルートに掲示し、問題のオブジェクトを見つけてその属性を更新するコントローラアクションを設定する必要があります。 –
あなたはJavascriptでしかできません。 –