如果我使用rails视图表单模板有什么好处?

时间:2013-11-04 07:25:34

标签: ruby-on-rails ruby

例如,我做了一个这样的表格

<form name="register" method="post" enctype="multipart/form-data">
  <p><h3>User check</h3></p>
  <p>admin ID: <input type="text" name="userid"></p>
  <p>admin Pass: <input type="password" name="password"></p>

  <input type="submit" name="apply" value="Submit"></p>
  <p>&nbsp;</p>
</form>

我的经理想要将此表单更改为rails表单模板,

<%= form_for(:model) do |form| %>
<p>
    <%=form.label :input%>
    <%=form.text_field :input, :placeholder => 'Enter text here...'%>
</p>

<%end%>

我的问题是,它可以正常使用基于html的前端代码。为什么我必须将其更改为rails代码?我只想保留我的前端代码......我不知道为什么我要改变这个:(。另外,我是Ruby on Rails的新手。这是主要原因。我不想'改变现有代码,如果它正在工作。

我真的很讨厌这份工作。我必须将所有属性转换为rails代码,这让我非常疲惫:(

2 个答案:

答案 0 :(得分:1)

表单构建者随时为您提供帮助

表格助手应该让你的生活更简单。如果你不先写纯HTML,那么它们比纯html替代版更快。

它们还为困难的集成部分提供了许多简单的实现,例如:

  • 显示日期选择选择组
  • 反映了POST params中未选中复选框的事实
  • 如果添加文件输入,则自动在表单上添加多部分参数(实际上并不难实现,但容易忘记)
  • ......还有更多

进一步发展

所有这一切都与安慰有关,如果你已经有一个完美的纯HTML实现,你可能会认为你可以避免它。

但是如果有人以后必须在表单中添加日期选择输入会发生什么?她将不得不使用rails helper,因为它在控制器部分节省了大量时间来在数据库中设置日期。但她无法利用表单构建器,因为您还没有使用它。

现在,她必须选择使用纯HTML中混合的非构建器date_select标记或...来完全重写表单。你可能已经意识到,混合不同的风格通常被认为是丑陋的,我们不喜欢红宝石中的丑陋。

安全

表单标记帮助程序还提供了一项重要的安全措施:CSRF protection。每次使用rails helper创建<form>标记时,它都会自动添加包含密钥的隐藏输入。该密钥必须与表单数据一起发布,以证明来自当前网站的请求。

如果您使用普通的html表单,则不具备此安全性。你当然可以使用正确的方法手动添加令牌,但这又浪费时间而不仅仅是使用表单助手。

底线

主要问题是你在使用rails helper之前编写了纯html - 这就是浪费时间。

答案 1 :(得分:0)

使用Rails表单助手的一些好处是:

  • 输入元素名称和ID的一致命名
  • i18n支持标签
  • 使用form_for生成的网址不易出错
  • 更好地处理复选框
  • 好帮手,例如options_for_select
  • 少输入

最后一个可能是我的最爱:少打字