1

Rails でアプリを作成しようとしています。これは、オーディオ ファイルのアップロードを取得し、それらからメタデータを読み取ってデータベースに入力します。Taglib-ruby gem を使用して、さまざまなファイル タイプを処理しています。アップロードは単独で動作しているように見えますが、Taglib はそれに与えられたファイルを null と見なします。

これが私のコントローラーです:

class UploadsController < ApplicationController
    require 'taglib'

    def new
    end

    def create
        file = params[:upload]
        TagLib::FileRef.open(file) do |fileref|
            unless fileref.null?
                tag = fileref.tag
                # properties = fileref.audio_properties
                @song = Song.new(title: tag.title, artist: tag.artist, album: tag.album,
                    year: tag.year, track: tag.track, genre: tag.genre)
                if @song.save
                    redirect_to songs_path
                else
                    render 'new'
                end
            else
                raise "file was null"
            end
        end
    end
end

フォーム送信に対する私の見解:

<h1> Upload </h1>

<%= form_tag(url: { action: :create }, html: { multipart: true }) do %>

    <%= label_tag :upload, "Scan your song:" %>
    <%= file_field_tag :upload, multiple: true %>

    <br />
    <%= submit_tag "Submit" %>

<% end %>

Taglib 自体は機能しているようです - 「require 'taglib'」を追加すると、それに関して発生していたエラーが削除され、レールの外で作成したモックアップは正常に機能しました (したがって、私が使用しているファイルも問題ではありません)。これを実行するたびに、制御フローがレイズ コマンドにヒットし、レコードが保存されません。fileref.null? true を返しています。これは、アップロード プロセスに何か問題があることを示唆していますが、何が原因かわかりません。

理想的には、複数のアップロード オプションを使用して、このプロセスを各ファイルで順番に実行したいと考えていますが、1 つのアップロードを null 以外として登録することさえできません。

4

0 に答える 0