1

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

<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 代码,这让我非常疲惫:(

4

2 回答 2

1

表单构建器可以为您提供帮助

表单助手应该让你的生活更简单。如果您不先编写纯 html,则它们比纯 html 替代方案编写起来更快。

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

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

进一步的发展

所有这一切都是为了舒适,如果你已经有一个完美工作的纯 html 实现,你可能认为你可以避免它。

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

现在,她必须在使用混合在纯 html 中的非构建器date_select标记之间做出选择,或者……完全重写您的表单。您可能意识到,混合不同的样式通常被认为是丑陋的,我们不喜欢 ruby​​ 中的丑陋。

安全

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

如果您使用纯 html 表单,您将没有这种安全性。您当然可以使用正确的方法手动添加令牌,但这比简单地使用表单助手更浪费时间。

底线

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

于 2013-11-04T08:38:30.153 回答
0

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

  • 输入元素名称和 ID 的一致命名
  • i18n 对标签的支持
  • 使用 form_for 生成的 URL 不易出错
  • 更好地处理复选框
  • 好帮手喜欢options_for_select
  • 少打字

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

于 2013-11-04T08:38:19.980 回答