在Ruby on Rails视图中生成HTML的最佳方法

时间:2013-05-15 10:11:22

标签: ruby-on-rails ruby coding-style

我最近开始学习Ruby on rails并学习各种教程。以前,我用PHP编写代码。

我在教程中找到的一种做法如下。我想知道,如果这是最佳方式?使用它的可能方案是什么?

例如,在视图中生成表单时,使用了以下代码:

<h1>Contact us</h1>
<%= form_tag do %>
  <%= label_tag ('Name') %>
  <%= text_field_tag 'Name','Enter name here'%>
  <%= label_tag ('Email') %>
  <%= email_field_tag('Email', @email, options = {}) %>
  <%= submit_tag "Edit this article" %>
<% end %>

在视图中直接使用HTML代码并在生成动态内容的地方使用ruby不是一个好习惯吗?有什么理由我应该使用这些方法来生成html,而不是更快编码的唯一原因(对于那些更熟悉ruby方法的人)。因为,我是Ruby的新手,我会更快地编写HTML并在需要时使用Ruby,而不是出于生成HTML的简单原因。

行业惯例是什么?不习惯使用Ruby方法生成html的习惯会让我难以阅读其他代码吗?

感谢您提前做出任何回复。

3 个答案:

答案 0 :(得分:1)

这些是ActionView::Helper::FormHelpers的方法。它们不仅生成裸HTML标记。除了插入代码外,它们还会添加足够的idclassdata属性等。例如,动态插入的id负责创建可用的params hash,它反过来负责控制器中的大多数表单操作。

您可以尝试直接使用HTML插入,但会发生两件事:

  1. 脏兮兮的HTML标记。
  2. 非常规用途。
  3. XSS漏洞等安全问题。 (正如丹尼斯所指出的那样)

答案 1 :(得分:0)

Rails上的助手确实很有帮助,他们不是为了让它变得更难。当你习惯使用它时,你会感觉很棒。

无论如何你仍然可以直接使用html代码,如果你不想学习或使用帮助你可以做到这一点,但是你会在rails中找到一个很酷的东西,当然如果碰巧你应该在团队中工作我确信团队的其他成员将使用帮助者,而不是html。

rails推出了“约定优于配置”,其中一个优点是要知道作为rails开发人员,你可以在没有太多适应任何Rails项目的情况下工作而不会丢失查找文件,如何mvc working,以及其他类似的东西。

当你学习和练习更多使用助手时,你会开始看到它的所有“力量”,看看它真正有多大帮助。

答案 2 :(得分:0)

您正在使用的ruby方法称为 helpers 。他们就是那样做的:帮助。起初,需要学习很多东西,但在学习它们之后,它们可以节省大量时间。此外,它们不是ruby方法,它们属于rails框架 - 语言和框架是两个截然不同的东西。

以下是您应该使用视图助手的一些原因:

  • 帮助程序生成的所有HTML都遵循相同的结构,使您的HTML更加一致。
  • 他们可以帮助您避免遇到错误。例如,如果您写出完整的HTML,则可能会错过结束标记。如果您使用rails帮助程序,则可以确保生成的HTML有效且正确。它实际上消除了错误的潜在入口点。
  • 其他rails开发人员熟悉这些方法,并且会发现使用代码更容易(如果必须的话)。
  • 从美学的角度来看,我更喜欢阅读辅助方法,而不是尝试扫描HTML的行和行,而且我确信其他许多方法是相同的。它更加简洁。