2016-06-14 10 views
0

に送信しようとすると、ユーザー入力を保存するために送信キーが押される前にフォームの内容を取得する必要があります。フォームが送信され、検証に失敗した場合、ユーザー入力は失われます。変数の内容をparams [:

フォームの主な内容は、セッション変数で正常に動作しています。ペーパークリップからとテーブルの列にそれを保存し、その後のparamsに戻ってそれをロードします。[画像] [:画像]しかし、私はのparamsをしたい

私のフォームはrespond_toで

<div class="field" title="You may attach one or more documents to this observation: Pictures, word documents, spreadsheets, etc"> 
    <%= f.label :Upload_attachments %><br> 
    <%= file_field_tag "images[]", type: :file, multiple: true %> 
</div> 

を持っています[:画像]について、私はのparamsの内容は書くことができ、作成動作し、結果データに次のようなもので

if params[:images] 
     temp_data = TempDatum.create(item: '2', data: params[:images]) 
    end 

でテーブルへの

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@? name = \ "images [] \";ファイル名= \ "2016年06 13 capture.JPG \" \ rを\ nContentタイプ:画像/ JPEGの\ r \ n ">]私は、私は

@image_data = TempDatum.last 
    if @image_data.present? 
     # params[:images] = @image_data.data 
     params[:images] = '[#<ActionDispatch::Http::UploadedFile:0xe4a46e8 @tempfile=#<Tempfile:C:/Users/cmendla/AppData/Local/Temp/RackMultipart20160614-13124-iib9h0.JPG>, @original_filename="2016 06 13 capture.JPG", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"images[]\"; filename=\"2016 06 13 capture.JPG\"\r\nContent-Type: image/jpeg\r\n">]' 
     $temp1 = 'got here' 
    end 
を以下している作成中

私はTempDatum.dataの内容をparams [:images]に取り込むさまざまな方法を試しましたが、今のところ、テーブルのデータフィールドから生データを取得しようとしていました。

指定したレコードのparams [:images]をTempDatum.dataの値に設定するには、どうすればよいですか。

答えて

1

あなたがしようとしているものはうまく動作せず、大過剰に設計されています。 paramsオブジェクトはActionController::Parametersなので、作成したコントローラのコンテキスト外ではアクセスできません(ビューにアクセスできません)。ここで

はあなたが何をする必要があるかです:

まず、あなたがnewアクションで作成し、そのオブジェクトにフォームをマッピングすることを確認しようとしているオブジェクトをインスタンス化していることを確認してください。

第2に、createアクションの開始時にオブジェクトを再度インスタンス化する必要があります。あなたはそのオブジェクトのsaveアクションに対して条件付きでなければなりません。検証のためsaveが失敗した場合、render :newと入力したデータがフォームに保持されます。

def new 
    # map this to your form_for 
    @object = Model.new 
end 

def create 
    @object = Model.new(params) 
    # other logic... 
    if @object.save 
     # do what you need to do if everything is valid... 
    else 
     render :new 
    end 
end 
関連する問題