【问题标题】:Carrierwave doesn't save files or enter records in databaseCarrierwave 不保存文件或在数据库中输入记录
【发布时间】:2014-11-23 21:19:50
【问题描述】:

我正在尝试在我的 Rails 应用程序中使用 Carrierwave 存储上传的文件。我有一个模型可以保存名为Episode 的(播客)剧集的数据。每集都应该有一个列upload 用于与该集关联的音频文件。为此,我创建了一个名为 EpisodeUploader 的上传器,如下所示:

rails generate uploader Episode

注意:这有点令人困惑。我有一个名为 Episode 的模型 有一个名为 upload 的列,但上传者也称为 Episode (最终将使用生成器命名为 EpisodeUploader

为了让我的模型使用EpisodeUploader,我添加了一个名为upload的列

rails g migration add_upload_to_episodes upload:string

然后,在我的 Episode 模型中,我安装了上传器

mount_uploader :upload, EpisodeUploader

在我的表单中,我添加了一个像这样的文件字段:

= f.file_field :upload

现在,当我上传文件时,没有错误或抛出任何东西,但文件没有存储在我的磁盘上,也没有数据写入数据库。

我做错了什么?可能是命名问题?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 carrierwave


    【解决方案1】:

    确保您有写入该文件的权限。

    【讨论】:

    • 而且您必须确保您的载波配置正确。
    【解决方案2】:

    好的,我明白了。我在搭建模型后添加了上传器。脚手架操作在我的Episode模型中生成了这个方法

    def episode_params
      params.require(:episode).permit(:podcast_id, :name, :description)
    end
    

    我必须将 :upload 添加到允许的参数列表中:

    def episode_params
      params.require(:episode).permit(:podcast_id, :name, :description, :upload)
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2011-11-16
      • 2013-03-07
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多