Возможно, что-то вроде этого примера. Он будет расширять предоставленный объект или создавать его, если он не снабжен объектами. Это деструктивный характер, если вы поставляете ключи, которые уже существуют в объекте, но вы можете изменить это, если это не то, что вы хотите. Использует ECMA5.
/*global console */
/*members split, pop, reduce, trim, forEach, log, stringify */
(function () {
'use strict';
function isObject(arg) {
return arg && typeof arg === 'object';
}
function convertExtend(arr, obj) {
if (!isObject(obj)) {
obj = {};
}
var str = arr[0],
last = obj,
props,
valProp;
if (typeof str === 'string') {
props = str.split('.');
valProp = props.pop();
props.reduce(function (nest, prop) {
prop = prop.trim();
last = nest[prop];
if (!isObject(last)) {
nest[prop] = last = {};
}
return last;
}, obj);
last[valProp] = arr[1];
}
return obj;
}
var x = ['fum'],
y = [
['foo.bar.baz', 1],
['foo.bar.fum', new Date()],
['qux.qaz', 'abc'],
['foshizzle', 200]
],
z = ['qux.qux', null],
record = convertExtend(x);
y.forEach(function (yi) {
convertExtend(yi, record);
});
convertExtend(z, record);
document.body.textContent = JSON.stringify(record, function (key, value, Undefined) {
/*jslint unparam:true */
/*jshint unused:false */
if (value === Undefined) {
value = String(value);
}
return value;
});
}());
Я думаю, что проблема в вашем изображении в цикле и маршрутах
Некоторые изменения в представлении и итерации по @job.images
Это без удаленного: true
< / blockquote><% if @job.images.attached? %> <br/> <div class="row"> <% @job.images.each do |image| %> <div class="col-md-4"> <div class="panel panel-default"> <div class="panel-heading preview"> <%= image_tag(image) %> </div> <div class="panel-body"> <span class="pull-right"> <%= link_to 'Remove', delete_image_attachment_job_url(image_id: image) method: :delete, data: {confirm: "Are you sure"} do %> <i class="fa fa-trash-o" aria-hidden="true"></i> <% end %> </span> </div> </div> </div> <% end %> </div> <% end %>
Контроллер
def delete_image_attachment @image = ActiveStorage::Attachment.find(params[:image_id]) @image.purge redirect_back(fallback_location: request.referer) end
Поскольку вы используете блочную форму link_to
, вы должны поместить текст между do / end:
<%=
link_to delete_image_attachment_job_url(@job.images[image]),
remote: true,
method: :delete,
data: {confirm: "Are you sure"} do %>
<i class="fa fa-trash-o" aria-hidden="true">Remove</i>
<% end %>
Как в примере из документов :
< blockquote>Вы также можете использовать блок, если целевую ссылку трудно уместить в параметре name. Пример ERB:
blockquote><%= link_to(@profile) do %>
<strong><%= @profile.name %></strong> -- <span>Check it out!</span>
<% end %>
# => <a href="/profiles/1">
<strong>David</strong> -- <span>Check it out!</span>
</a>