数据库无法识别使用 Cocoon 形式动态生成的模型实例
Database not recognizing dynamically generated instances of model in form using Cocoon
我几乎完成了一个使用 cocoon 的表单,该表单管理需要动态生成表单部分的深层嵌套表单。数据库设置为可视化 has_many 行,行 has_many 窗格。
现在,我完全可以使用它了。但是当我添加我的样式时,它完全破坏了形式,我已经剥离了相当多的样式以试图找到问题,但它仍然存在。我知道问题出在我的 cover_image 表单子集中,因为与行和窗格相关的所有内容尚未涉及样式。
//Cover Image Upload Preview & Delete
$(function() {
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#img_preview').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
$("#visualization_cover_image").change(function(){
$('#img_preview').removeClass('hidden');
readURL(this);
});
});
//Displays cover image preview after file has been selected from desktop
$(function(){
$('input#visualization_cover_image').click(function() {
$('.img_prev').css({"display":"block"})
$('#trash-can_cover').css({"display":"none"})
});
});
//Displays Title box for input
$(function(){
$('label#text_preview').click(function() {
$('.inputtext').css({"display":"inline-block"});
$('label#text_preview').hide();
});
});
//image_form.scss
label:hover {
color: black;
text-decoration: underline;
}
.inputfile {
width: 0.1px;
height: 0.1px;
opacity: 0;
overflow: hidden;
position: absolute;
z-index: -1;
}
.inputfile + label {
margin-top: 3.5em;
font-size: 1.2em;
color: white;
display: inline-block;
padding-left: 10%;
}
.inputfile:focus + label,
.inputfile + label:hover {
color: black;
text-decoration: underline;
}
.pre_img_prev {
width: 1200px;
height: 170px;
position: relative;
overflow: hidden;
background-color: #ADADAD;
color: #ecf0f1;
}
.gray_bar {
float: left;
width: 1.7em;
height: 100em;
background-color: #828282;
}
.img_prev {
display: none;
position: relative;
}
#img_preview {
left: 0;
top: 0;
width: 100em;
height: 100em;
position: absolute;
}
#text_preview {
margin-top: 2.3em;
font-size: 1.2em;
color: white;
display: inline-block;
position: relative;
}
.inputtext {
display: none;
background: transparent;
top: 4.2em;
right: 25em;
width: 200px;
color: white;
position: relative;
}
.inputtext:focus {
background: transparent;
}
.inputtext + label {
padding-top: 24px;
color: white;
display: inline;
}
<div class="try">
<div class="breadcrumb-wrapper">
<ul class="breadcrumbs">
<li>
placeholder
</li>
</ul>
<%= form_for @visualization, :html => {:multipart => true} do |f| %>
</div>
<div class="cover_image text-center">
<div class="row pre_img_prev">
<div class="gray_bar"></div>
<div class="field img_prev">
<img id="img_preview" src="#" alt="your image" class="img-thumbnail hidden text-center"/>
<%= f.label :title, "+ Add Title", id: "text_preview"%>
<%= f.text_field :title, name: "visualization[title]", id: "visualization[title]", class: "inputtext"%>
<div class="trash-can_title">
<a href="#" id="trash-can_title"><i class="fa fa-trash fa-3x" aria-hidden="true"></i></a>
</div>
</div>
<div class="field">
<%= f.label :cover_image, "+ Add Cover Image" %>
<%= f.file_field :cover_image, class: "inputfile" %>
<%= f.hidden_field :cover_image_cache %>
</div>
<div class="trash-can_cover">
<a href="#" id="trash-can_cover"><i class="fa fa-trash fa-3x" aria-hidden="true"></i></a>
</div>
</div>
</div>
<div id="rows" class="row">
<%= f.fields_for :rows do |row| %>
<%= render 'row_fields', :f => row %>
<% end %>
<div class="links">
<%= link_to_add_association "Add Row", f, :rows %>
</div>
</div>
<div class="actions">
<%= f.submit %>
</div>
如果有人能帮助我发现问题,我将非常感激,因为我已经将范围缩小到这里,但现在已经盯着它看了几个小时,但不知道为什么它不是正在工作。
以防万一以后有人想知道(甚至不确定 cocoon 是否还在使用 :)
问题是 <%= form_for @visualization, :html => {:multipart => true} do |f| %>
在 div 内,而后续代码
<div id="rows" class="row">
<%= f.fields_for :rows do |row| %>
<%= render 'row_fields', :f => row %>
<% end %>
<div class="links">
<%= link_to_add_association "Add Row", f, :rows %>
</div>
</div>
<div class="actions">
<%= f.submit %>
</div>
在那之外 div。愚蠢的问题,但它让我花了几个小时!刚把我的 <%= form_for @visualization, :html => {:multipart => true} do |f| %>
移到最外面的 div 就可以了。
我几乎完成了一个使用 cocoon 的表单,该表单管理需要动态生成表单部分的深层嵌套表单。数据库设置为可视化 has_many 行,行 has_many 窗格。
现在,我完全可以使用它了。但是当我添加我的样式时,它完全破坏了形式,我已经剥离了相当多的样式以试图找到问题,但它仍然存在。我知道问题出在我的 cover_image 表单子集中,因为与行和窗格相关的所有内容尚未涉及样式。
//Cover Image Upload Preview & Delete
$(function() {
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#img_preview').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
$("#visualization_cover_image").change(function(){
$('#img_preview').removeClass('hidden');
readURL(this);
});
});
//Displays cover image preview after file has been selected from desktop
$(function(){
$('input#visualization_cover_image').click(function() {
$('.img_prev').css({"display":"block"})
$('#trash-can_cover').css({"display":"none"})
});
});
//Displays Title box for input
$(function(){
$('label#text_preview').click(function() {
$('.inputtext').css({"display":"inline-block"});
$('label#text_preview').hide();
});
});
//image_form.scss
label:hover {
color: black;
text-decoration: underline;
}
.inputfile {
width: 0.1px;
height: 0.1px;
opacity: 0;
overflow: hidden;
position: absolute;
z-index: -1;
}
.inputfile + label {
margin-top: 3.5em;
font-size: 1.2em;
color: white;
display: inline-block;
padding-left: 10%;
}
.inputfile:focus + label,
.inputfile + label:hover {
color: black;
text-decoration: underline;
}
.pre_img_prev {
width: 1200px;
height: 170px;
position: relative;
overflow: hidden;
background-color: #ADADAD;
color: #ecf0f1;
}
.gray_bar {
float: left;
width: 1.7em;
height: 100em;
background-color: #828282;
}
.img_prev {
display: none;
position: relative;
}
#img_preview {
left: 0;
top: 0;
width: 100em;
height: 100em;
position: absolute;
}
#text_preview {
margin-top: 2.3em;
font-size: 1.2em;
color: white;
display: inline-block;
position: relative;
}
.inputtext {
display: none;
background: transparent;
top: 4.2em;
right: 25em;
width: 200px;
color: white;
position: relative;
}
.inputtext:focus {
background: transparent;
}
.inputtext + label {
padding-top: 24px;
color: white;
display: inline;
}
<div class="try">
<div class="breadcrumb-wrapper">
<ul class="breadcrumbs">
<li>
placeholder
</li>
</ul>
<%= form_for @visualization, :html => {:multipart => true} do |f| %>
</div>
<div class="cover_image text-center">
<div class="row pre_img_prev">
<div class="gray_bar"></div>
<div class="field img_prev">
<img id="img_preview" src="#" alt="your image" class="img-thumbnail hidden text-center"/>
<%= f.label :title, "+ Add Title", id: "text_preview"%>
<%= f.text_field :title, name: "visualization[title]", id: "visualization[title]", class: "inputtext"%>
<div class="trash-can_title">
<a href="#" id="trash-can_title"><i class="fa fa-trash fa-3x" aria-hidden="true"></i></a>
</div>
</div>
<div class="field">
<%= f.label :cover_image, "+ Add Cover Image" %>
<%= f.file_field :cover_image, class: "inputfile" %>
<%= f.hidden_field :cover_image_cache %>
</div>
<div class="trash-can_cover">
<a href="#" id="trash-can_cover"><i class="fa fa-trash fa-3x" aria-hidden="true"></i></a>
</div>
</div>
</div>
<div id="rows" class="row">
<%= f.fields_for :rows do |row| %>
<%= render 'row_fields', :f => row %>
<% end %>
<div class="links">
<%= link_to_add_association "Add Row", f, :rows %>
</div>
</div>
<div class="actions">
<%= f.submit %>
</div>
如果有人能帮助我发现问题,我将非常感激,因为我已经将范围缩小到这里,但现在已经盯着它看了几个小时,但不知道为什么它不是正在工作。
以防万一以后有人想知道(甚至不确定 cocoon 是否还在使用 :)
问题是 <%= form_for @visualization, :html => {:multipart => true} do |f| %>
在 div 内,而后续代码
<div id="rows" class="row">
<%= f.fields_for :rows do |row| %>
<%= render 'row_fields', :f => row %>
<% end %>
<div class="links">
<%= link_to_add_association "Add Row", f, :rows %>
</div>
</div>
<div class="actions">
<%= f.submit %>
</div>
在那之外 div。愚蠢的问题,但它让我花了几个小时!刚把我的 <%= form_for @visualization, :html => {:multipart => true} do |f| %>
移到最外面的 div 就可以了。