我在使用carrierwave gem上传音频时遇到问题,当我发布音频文件时,所有显示的都是音频网址链接。第一次使用宝石而不确定我是否正确使用了载波。只是试图在节目页面上显示音频文件。
class AudioUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
# include CarrierWave::MiniMagick
storage :file
include CarrierWave::Audio
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
show.html.erb
<p id="notice"><%= notice %></p>
<p>
<strong>Title:</strong>
<%= @music.title %>
<%= @music.audio.url() %>
</p>
<%= link_to 'Edit', edit_music_path(@music) %> |
<%= link_to 'Back', musics_path %>
music.rb
class Music < ApplicationRecord
mount_uploader :audio, AudioUploader
end
模式
ActiveRecord::Schema.define(version: 20170606155943) do
create_table "musics", force: :cascade do |t|
t.string "title"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "audio"
end
end
音乐控制器
class MusicsController < ApplicationController
before_action :set_music, only: [:show, :edit, :update, :destroy]
# GET /musics
# GET /musics.json
def index
@musics = Music.all
end
# GET /musics/1
# GET /musics/1.json
def show
end
# GET /musics/new
def new
@music = Music.new
end
# GET /musics/1/edit
def edit
end
# POST /musics
# POST /musics.json
def create
@music = Music.new(music_params)
respond_to do |format|
if @music.save
format.html { redirect_to @music, notice: 'Music was successfully created.' }
format.json { render :show, status: :created, location: @music }
else
format.html { render :new }
format.json { render json: @music.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /musics/1
# PATCH/PUT /musics/1.json
def update
respond_to do |format|
if @music.update(music_params)
format.html { redirect_to @music, notice: 'Music was successfully updated.' }
format.json { render :show, status: :ok, location: @music }
else
format.html { render :edit }
format.json { render json: @music.errors, status: :unprocessable_entity }
end
end
end
# DELETE /musics/1
# DELETE /musics/1.json
def destroy
@music.destroy
respond_to do |format|
format.html { redirect_to musics_url, notice: 'Music was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_music
@music = Music.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def music_params
params.require(:music).permit(:title, :audio)
end
end