[英]RoR: form_for is printing the activerecord at the bottom of my page?
我正在为我的团队创建一个非常基础的CMS,以使他们能够更改页面标题和类似性质的内容。 我有cms_pages和cms_pieces。 cms_pages指示要为cms_pieces创建的页面,因此cms_pieces属于cms_pages。
我从cms_pages索引页面创建页面,然后单击这些页面以转到其显示页面。 在显示页面上,我为cms_pieces创建了一个创建表单。
创建cms_pieces后,我将使用.each方法遍历它们,并以下面的形式填充它们: 它们的名称作为标题,并将其值应用在输入元素中,这将允许我的团队根据需要进行更新。
cms_pieces表单的这种迭代给我带来了麻烦。 请注意,这些cms_pieces更新表单位于cms_pages的视图名称约定中。
我曾尝试过像rail_with这样的不同的rails表单助手来完成它,但是它花费很少的参数来使它像我需要的那样准确。 也许我不完全了解如何使用它? 从我的研究看来,这似乎是一种全新的,可以包容各种形式的导轨形式,但是我遇到了限制。
因此,我研究了如何从cms_pages视图中将此表格定位到cms_pieces控制器,这就是我想到的。 它可以工作,但是它在页面底部打印每个cms_pieces记录,这非常丑陋,一点也不希望。
*注意,这在我的“后端”名称空间中。
<%= @cms_pieces.each do |piece|%>
<div> Edit <%= piece.name %> </div>
<%= form_for(backend_cms_piece_path(piece), url: backend_cms_piece_path, :method => :patch) do |form| %>
<% if piece.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(piece.errors.count, "error") %> prohibited this cms_piece from being saved:</h2>
<ul>
<% piece.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= form.label :input %>
<%= form.text_field :input, value: piece.input %>
</div>
<div class="field" style="visibility: hidden; position: absolute; bottom: 0px; right: 0px; z-index: -100;">
<%= form.label :cms_pages_id %>
<%= form.text_field :cms_pages_id, value: params[:id] %>
</div>
<div class="field" style="visibility: hidden; position: absolute; bottom: 0px; right: 0px; z-index: -100;">
<%= form.label :id %>
<%= form.text_field :id, value: piece.id %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
<% end %>
然后将其打印在底部
[#CmsPiece id:13,名称:“横幅标题”,输入:“横幅材料?!”,cms_pages_id:12,created_at:“ 2019-08-23 02:24:24”,updated_at:“ 2019-08-23 03:00:13“,#Cms项目ID:14,名称:“ banner sub text”,输入:“ Sub Texting up here”,cms_pages_id:12,created_at:“ 2019-08-23 03:05:17”, Updated_at:“ 2019-08-23 03:05:17”]
有谁知道我的表单出了什么问题吗? 甚至可以指导我找到更优雅的表单助手? 我觉得自己在形式上的论点是多余的,但这是我发现完成我所需要的唯一途径。
我这样设置表单的原因是,我可以将page_id和件ID传递给件控制器,以正确填写件数据。 我意识到将片断传递给form参数应该使update方法保持直接,但并没有传递更新,因此我通过仅将它与form字段一起提交来解决它。
在代码的第一行中,您已使用<%= >
。 因此它将循环打印每个记录,请使用<% >
而不是<%= >
。
从迭代语句中删除=
将解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.