我是Ruby on Rails的新手。我使用scaffold为admin
创建模型视图和控制器
现在,我的一位前辈告诉我在_form.html.erb
为管理员进行更改。我不知道如何实现它。在_form.html.erb中使用/进行更改的优点或缺点是什么与普通方法相比(在索引,新建,显示和编辑中进行更改)
我的_form.html.erb如下: -
<%= form_for(@admin) do |f| %>
<% if @admin.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@admin.errors.count, "error") %> prohibited this admin from being saved:</h2>
<ul>
<% @admin.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我的管理员表格如下: -
id serial NOT NULL,
username character varying(20) NOT NULL DEFAULT ''::character varying,
email character varying(255),
first_name character varying(100),
middle_name character varying(100),
last_name character varying(100),
designation character varying(255),
office_phone character varying(255),
deleted integer NOT NULL DEFAULT 0,
super_admin boolean NOT NULL DEFAULT false,
created_at timestamp without time zone NOT NULL,
updated_at timestamp without time zone NOT NULL,
CONSTRAINT admins_pkey PRIMARY KEY (id)
有人可以帮我实现这一点。谢谢提前
答案 0 :(得分:4)
文件以“_”下划线开头,在rails中称为partials。它鼓励 DRY (不要重复自己)软件开发原则。您可以重复使用partials,在这种情况下,_form.html.erb可以用于new.html.erb和edit.html.erb功能。
我们可以在其他html.erb文件中渲染部分内容,也可以在控制器内调用。
render :partial => 'partial_name'
在partial_name中没有下划线。
答案 1 :(得分:1)
这意味着您只需要在一个地方进行更改,这与编码时不要重复自己(DRY)一致。
要实现它,只需将您想要的代码拖出到部分代码(用_命名)。
要将其包含在索引的html中,编辑等,您可以插入render 'partial'
,其中partial是其名称而不带下划线。
特别是在您的示例中,您可以使用以下模式引用表单的每个项目
<%= f.label :email %>
<%= f.text_field :email %>
答案 2 :(得分:1)
阅读部分内容。它们可以帮助您干掉代码。阅读更多here
答案 3 :(得分:1)
在这里,我试图在其他答案的帮助下给你答案,
在Rails中,公共视图代码可以放在名为partials的文件中,(读取@Sachin R's
回答部分内容),partials基本上可以避免代码重复,并保持代码清洁/可维护。
在您的情况下,当您运行脚手架时,您的new
和edit
视图使用相同的表单。由于这个原因,表单已转换为部分(_form
)。因此,当您对_form
部分进行更改时,这些更改将同时适用于new
和edit
次观看。 (这就是为什么你的老年人要求在_form
)中进行更改,
所以底线是,因为部分是公共代码段,一旦你更改它们,它将适用于整个站点。