我目前正在学习Rails,并且有以下代码:
<%= form_for(@account) do |f| %>
<%= f.label :username %>
<%= f.text_field :username, class: 'form-control' %>
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>
<%= f.label :password_confirmation, "Confirm your password" %>
<%= f.password_field :password_confirmation, class: 'form-control' %>
<%= f.label :website %>
<%= f.text_field :website, class: 'form-control' %>
<%= f.submit "Sign up!", class: "btn btn-primary" %>
<% end %>
我想添加字形图标,因此其中一个字段(:email)的代码如下所示:
<div class="input-group">
<div class="input-group-addon">
<span class="glyphicon glyphicon-user"></span>
</div>
<%= f.email_field :email, class: 'form-control' %>
</div>
麻烦的是,我想在所有领域都做到这一点。
但是,然后我必须对所有字段复制并粘贴这些相同的语句,更改glyphicon- *和字段名称(以及密码字段的字段类型)。有没有更简单的DRY方法来做到这一点?
Alon Swain方法也是正确的,但我建议使用单独的局部而不是说 _input_field_password.html.erb
<div class="input-group">
<div class="input-group-addon">
<span class="glyphicon glyphicon-user"></span>
</div>
<%= f.email_field field_name, class: 'form-control' %>
</div>
现在更改您的form.erb
<%= form_for(@account) do |f| %>
<%= f.label :username %>
<%= render partial 'input_field_password.html.erb', locals: {f: f, field_name: :user_name}%>
<%= f.label :email %>
<%= render partial 'input_field_password.html.erb', locals: {f: f, field_name: :email} %>
<%= f.label :password %>
<%= render partial 'input_field_password.html.erb', locals: {f: f, field_name: :password}%>
<%= f.label :password_confirmation, "Confirm your password" %>
<%= render partial 'input_field_password.html.erb', locals: {f: f, field_name: :password_confirmation}%>
<%= f.label :website %>
<%= render partial 'input_field_password.html.erb', locals: {f: f, field_name: :website}%>
<%= f.submit "Sign up!", class: "btn btn-primary" %>
<% end %>
您还可以使用循环进一步重构它
<%= form_for(@account) do |f| %>
<% [:username, :email, :password, :password_confirmation, :website].each do |field_name|
<%= f.label :field_name %>
<%= render partial 'input_field_password.html.erb', locals: {f: f, field_name: :field_name}%>
<%end%>
<%= f.submit "Sign up!", class: "btn btn-primary" %>
<% end %>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句