尝试将变量的内容分配给params [:

问题描述:

为了保存用户输入,我需要在按下提交键之前获取表单的内容。如果表单提交并且验证失败,则用户输入将丢失。尝试将变量的内容分配给params [:

我有窗体的主要内容工作正常与会话变量。不过,我想借此PARAMS:从曲别针,并且保存到一个列在一个表中,然后再加载到PARAMS [图片] [:图像]

我的形式有

<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> 

中的respond_to为创造,我可以写则params的内容[:图像]与

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

,在类似的数据结果如下工作和一台

[#, @ original_filename =“2016 06 13 capture.JPG”, @ content_type =“image/jpeg”,@ headers =“Content-Disposition:form-data; name = \“images [] \”;文件名= \ “2016 06 13 capture.JPG \” \ r \ nContent-类型:image/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 [:图像]设置为TempDatum.data中的值。

你试图做的事情不会奏效,而且是过度设计的。 params对象是ActionController::Parameters,因此,在创建它的控制器的上下文之外永远不可访问(在视图中无法访问它)。

以下是你需要做的:

首先,确保你实例您正试图在new行动创造和确保目标您的形式映射到该对象。

其次,您需要在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