登録画面→確認画面→登録画面(何かしらの誤りの修正のため。また、登録画面からはファイルアップロードが可能)
と、画面遷移をした際に、登録画面で選択したアップロードファイルを再度登録画面に戻った際にファイル選択された状態にしておきたいと考えています。
以下にイメージのソースを記載させていただきます。
■tests/new.html.erb
<%= form_for @test, url:{action: 'confirm'} do |f| %>
<%= f.file_field :upload %>
<%= f.submit %>
<% end %>
■tests_controller.rb
def confirm
@test = Test.new(test_params)
cookies[:upload] = params[:test][:upload]
p cookies[:upload] ##1
format.html { render action: 'confirm_check' }
end
■tests/confirm_check.html.erb
<%= form_for @test do |f| %>
<label>ファイル名:
<%= @f.test_file_name %>
</label>
<%= f.submit '保存', :name => 'regist'%>
<%= f.submit '修正', :name => 'back'%>
■tests_controller.rb
def create
@test = Test.new()
p cookies[:upload] ##2
@test.upload = cookies[:upload] #=>エラーになる
if params[:regist]
@test.save
render 'index'
else
render 'new'
end
end
上記プログラムにおいて、
p cookies[:upload]をすると
##1の場合:#<ActionDispatch::Http::UploadedFile:0x007fad0106bb10 @tempfile=#<Tempfile:/var/folders/7l/mbl83q6j6mbdvh 。。。。。略">
##2の場合:"#ActionDispatch::Http::UploadedFile:0x007fad0106bb10"
となってしまいます。
そのため、後続の
@test.upload = cookies[:upload]で
Paperclip::AdapterRegistry::NoHandlerErrorのエラーになってしまいます。
グーグル検索すると、画面遷移間でファイル情報を持つとセキュリティー的に良くないというような内容を目にしましたが、上記内容がそのために発生していることなのでしょうか。それとも、そもそもやり方が良くないのでしょうか。
どうぞよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/09/22 07:38
退会済みユーザー
2015/09/22 08:35