Rails:form_for缩短代码

gnirut_tds

我目前正在学习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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails form_for NoMethodError

来自分类Dev

Rails slim form_for标签

来自分类Dev

Rails 4:form_for与关联

来自分类Dev

Rails form_for关系模型

来自分类Dev

Rails form_for错误的方法

来自分类Dev

Rails form_for突然结束

来自分类Dev

Rails form_for多个不同的类对象?

来自分类Dev

form_for在Ruby on Rails中如何工作

来自分类Dev

Form_for中的Rails连字符

来自分类Dev

Ruby on Rails中的form_for错误消息

来自分类Dev

Rails 4.0:form_for的选定值[select]

来自分类Dev

rails form_for和相关模型

来自分类Dev

Rails Form_for局部变量

来自分类Dev

使用STI基类的Rails form_for

来自分类Dev

Rails form_for如何更新或创建新的?

来自分类Dev

使用rails form_for的漂亮单选按钮

来自分类Dev

遍历几个对象form_for rails

来自分类Dev

Rails 4 form_for双嵌套注释

来自分类Dev

How to pass extra parameter in rails form_for

来自分类Dev

请在Rails中解释form_for方法

来自分类Dev

rails form_for不提交创建操作

来自分类Dev

Ruby Rails form_for每个循环

来自分类Dev

Rails form_for和bootstrap glyphicons

来自分类Dev

rails form_for编辑文本区域

来自分类Dev

rails form_for和相关模型

来自分类Dev

Rails form_for使用Nil填充模型

来自分类Dev

Ruby on Rails form_for创建空对象

来自分类Dev

Rails:嵌套form_for错误:'ActionController :: UrlGenerationError'

来自分类Dev

Rails form_for,使用分类创建事件