如何使用“ carrierwave” gem为表单添加字段?

时间:2019-03-13 08:40:45

标签: ruby-on-rails

我熟悉

之类的代码
Video.create(title: 'title') 

如果您添加到其中,则可以在输入条目时添加更多值

Video.create(title: 'title', value: 'value') 

我试图弄清楚如何用'carrierwave'宝石完成此操作,但是由于表单是自动生成的,因此我不确定如何调整它。例如,假设列存在,我如何添加将添加到“视频”表中的“值”值。

_form.html.erb

<%= form_for(@video) do |f| %>
  <% if @video.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@video.errors.count, "error") %> prohibited this video from being saved:</h2>

      <ul>
      <% @video.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </div>

  <div class="field">
    <%= f.label :file %><br>
    <%= f.file_field :file %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

new.html.erb

<h1>New Video</h1>

<%= render 'form' %>

<%= link_to 'Back', videos_path %>

视频控制器

def new
  @video = Video.new
end

def create
  @video = Video.new(video_params)

  respond_to do |format|
    if @video.save
      format.html { redirect_to @video, notice: 'Video was 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

1 个答案:

答案 0 :(得分:0)

您要将上传的视频存储在value字段中,对吗? 在这种情况下,您可以使用value作为文件字段的名称。另外,请确保您已按如下所示安装了上载器:

 mount_uploader :value, VideoUploader

其中VideoUploader是上传者的名称。

推荐how to upload videos using Carrierwave