尝试将变量的内容分配给 params[:
Trying to assign contents of a variable to params[:
我需要在按下提交键之前抓取表单的内容以保存用户输入。如果表单已提交且验证失败,则用户输入将丢失。
我的表单主要内容可以正常使用会话变量。但是我想从回形针中获取 params[:images] 并将其保存到 table 中的一列,然后将其加载回 params[:images]
我的表格有
<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[:images] 的内容写入 table 和
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[]\"; filename=\"2016 06 13
capture.JPG\"\r\nContent-Type: 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 的内容放入参数 [:images] 现在的方式,我只是试图从数据字段中获取原始数据table。
我需要做什么才能将给定记录的 params[:images] 设置为 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
我需要在按下提交键之前抓取表单的内容以保存用户输入。如果表单已提交且验证失败,则用户输入将丢失。
我的表单主要内容可以正常使用会话变量。但是我想从回形针中获取 params[:images] 并将其保存到 table 中的一列,然后将其加载回 params[:images]
我的表格有
<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[:images] 的内容写入 table 和
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[]\"; filename=\"2016 06 13 capture.JPG\"\r\nContent-Type: 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 的内容放入参数 [:images] 现在的方式,我只是试图从数据字段中获取原始数据table。
我需要做什么才能将给定记录的 params[:images] 设置为 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