问题
我在videos_controller.rb中有这两个功能,用于在RoR中创建和更新视频
# POST /videos
# POST /videos.json
def create
@video = Video.new(video_params)
respond_to do |format|
if @video.save
format.html { redirect_to @video, notice: 'Video successfully created.' }
format.json { render :show, status: :created, location: @video }
else
format.html { render :new }
format.json { render json: @video.errors, status: :unprocessable_entity }
end
end
end
# PATCH/PUT /videos/1
# PATCH/PUT /videos/1.json
def update
respond_to do |format|
if @video.update(video_params)
format.html { redirect_to @video, notice: 'Video successfully updated.' }
format.json { render :show, status: :ok, location: @video }
else
format.html { render :edit }
format.json { render json: @video.errors, status: :unprocessable_entity }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_video
@video = Video.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def video_params
params.require(:video).permit(:title, :file)
end
end
问题是无论何时上传,它都会在路径中创建一个新文件夹,即uploads / video / file / {id} / filename。
要求 我希望路径是静态的,因为只有一个视频,所以我希望视频名称和路径保持相同,即使它被更新,即新文件(如果编辑)由旧文件名放置或保存在旧文件路径。
我该怎么办?
答案 0 :(得分:1)
如果您使用carrierwave uploader,则可以从store_dir
更改uploaders/video_uploader.rb
方法
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
到
def store_dir
"uploads/#{model.class.to_s.underscore}/#{model.id}"
end
但我不太明白,为什么默认行为会打扰你。