Rails hidden_field не работает! и я использую самоцвет для создания видео - PullRequest
0 голосов
/ 11 января 2019

Мой поток действий контроллера равен new -> confirm -> create

Видео файл, загруженный с нового, может быть воспроизведен в режиме подтверждения. Тем не менее, подтверждение приведет к установке значения nil при выполнении сохранения создания.

И наоборот, если вы создаете видео после загрузки в подтверждение, сохранение будет работать нормально.

Я думаю, что эта проблема возникает из-за скрытого поля. Я думаю, что эта проблема возникает, потому что hidden_field не хранит значение должным образом (но консоль передает значение видео в качестве параметра)

confirm.html.erb

<% if @propertys.video? %>
        <td><%= video_tag @propertys.video.url, autoplay: true, muted: true, controls: true , :size => "350x260"%></td>
        <%= f.hidden_field :video, :value => @propertys.video %>
<% else %>
        <td>abc</td>
<% end %>  


new.html.erb
<td><%= f.label :内部ビデオ %></td>
<td><%= f.file_field :video, :multiple => false %></td>

Значения параметров можно проверить в консоли Однако, если вы на самом деле поместите его в параметр Strong, он изменится на ноль.

Подтверждение видео в обычном режиме

Редактировать: код контроллера

   def confirm
    puts("======= confirm 侵入=======")
    @propertys = Property.new(property_params)
    #@property.video = params[:property][:video]
    p @propertys
  end



 def create
    puts("======= create ========")
    @propertys = Property.new(property_params)
    @propertys.user_id = current_user.id
    p @propertys
    p params[:property][:video]
    puts("$$$$$$$$  create save$$$$$$$$")
    #@property.video = params[:property][:video]
    if @propertys.save
      puts("good")
      redirect_to list_propertys_path
    else
      puts("bad")
      logger.debug @propertys.errors.inspect
      redirect_to new_property_path
    end
  end

 def property_params
    params.require(:property).permit({image: []}, :video, :image_cache, :name, :rent, :subsidy, :reward, :region, :area, :extent, :longitude, :latitude)
  end

videouploader.rb

class VideoUploader < CarrierWave::Uploader::Base
  include CarrierWave::Video
  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def extension_white_list
    %w(ogg ogv 3gp mp4 m4v webm mov m2v 3g2)
  end


end

1 Ответ

0 голосов
/ 11 января 2019

С помощью других я решил это. Спасибо. Эта ссылка для меня.

https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-%22Upload%22-from-a-local-file

 @propertys.video = Rails.root.join("public/#{params[:property][:video]}").open
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...