- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚开始使用 Rails,还有很多东西需要学习,所以我可能会比平常更频繁地在 Stackoverflow 上询问初学者 Rails/Ruby 问题。
我只是想弄清楚 Helpers 在 Rails 中是如何工作的。从我目前所见,Helpers 旨在与 Views 一起使用,而不是与您的 Controllers 一起使用。
但是,我想创建一个简单的函数来验证 params 中给出的用户输入(检查是否定义了某些参数,并可选择检查它们的值是否有效)。
任何人都可以向我解释什么是实现这一点的最佳方式? (请记住,我想在许多不同的 Controller 中使用它,因此它应该是全局可用的。)
我还注意到,默认情况下,Rails 不会在主应用程序文件夹中生成 lib 文件夹。开发人员是将他们的库放在主文件夹中的 app 文件夹之外,还是 Rails 使用库的方式不同?
最佳答案
关于您的验证问题,这取决于您要验证的内容。
如果数据构成了问题域中的对象,也称为模型,那么您应该使用 ActiveModel 的内置验证器。这可能是您应该做的,但是在不知道确切问题的情况下很难说。见 Rails Guides on Validations .您可以通过问自己需要验证的数据在您获取后是否将其存储来判断是否是这种情况。如果是这样,它绝对是一个模型。此类数据的一个示例是从浏览器表单发送到 Rails 的博客文章的标题和文本字段。
如果数据对您的模型来说是第三级的,或者特定于演示文稿,那么您应该可以使用助手。你注意到助手主要用于 View 中,虽然这是真的,但没有什么能阻止你在 Controller 中使用它们,你只需要声明你将使用 ActiveController#helper
来使用它们。方法。内ApplicationController
class,很多开发者都会放helper :all
只包括所有 Controller 中的所有助手。一旦需要代码一次,它就不会真正对性能造成那么大的影响。
请注意,几乎所有传入的数据都可以使用模型进行建模。 Rails 世界中的一个大思想流派赞同 Fat Model 的想法。人们说在模型中放置尽可能多的代码而在 Controller 中放置尽可能少的代码可以正确分离关注点并导致更易于维护的代码。这表明,即使您不认为传入数据是可建模的(从某种意义上说,您可以创建一个模型来表示它),您也应该尝试使其成为一个模型并封装围绕验证它的逻辑。但是,您可能会发现创建辅助函数更快,并且两者都可以。
您验证用户输入的想法是一个很好的想法。我的感觉是,由于您是 Rails 新手,您习惯于自己做这些事情,但这在这里并不完全适用。在 Rails 世界中,很多常见的东西,比如验证,都是由框架处理的。您不必检查 params
中是否存在数组,而不是您调用 validates_presence_of
在模型上,让 Rails 将错误吐出给用户。从长远来看,如果您让框架按照其设计的目的去做,它会使事情变得更容易。
关于您关于lib
的问题文件夹,这并不重要。您可以将各种支持文件和库放在 lib
中。根目录中的文件夹,它们将可用于您的应用程序(app
文件夹中的文件)。您还可以选择将您的代码抽象为插件或 gem 并以这种方式包含它,很多人选择这样做。我对此的建议是在深入研究之前阅读 gem 和插件的概念。
关于ruby-on-rails - rails 助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4786099/
有时我需要(为了让我的开发更快)在我的代码中对一些东西进行硬编码。这可能是凭据,或者可能只是一个允许我测试某些功能的 hack。由于很多原因,我从来不想将这段代码推送到主代码库甚至开发分支。一段时间以
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
我经常发现自己从类中提取常见行为到只包含一组静态方法的帮助程序/实用程序类中。我经常想知道是否应该将这些类声明为抽象类,因为我真的想不出实例化这些类的正当理由? 将这样的类声明为抽象类的优点和缺点是什
如果我这样做: $obj = factory(Object::class)->make(); collect($obj); 我返回了一个类型的集合: Illuminate\Support\Collec
我有一个应用程序,我可以在其中列出 parent 和 child 。当我添加一个 child 时,我需要获得一个 parent 列表作为下拉列表显示。有没有类似 collection_select 的
我有渲染组件( source ),用于从 Controller 字段渲染组件/助手。它适用于 ember 1.9.1,但在更新到 ember 1.12.1 后,我发现 API 发生了变化。之后upda
我刚开始使用 Rails,还有很多东西需要学习,所以我可能会比平常更频繁地在 Stackoverflow 上询问初学者 Rails/Ruby 问题。 我只是想弄清楚 Helpers 在 Rails 中
我在 Web 上使用 VS Express 2012。我的项目是一个 MVC 4 项目。 我正在尝试创建一个助手来创建一个菜单项,该菜单项是带有标签的 png 图像。我几乎剪切并粘贴了这段代码: Ac
我正在尝试在我的 Vue 页面中映射我商店的状态变量: export default { data: () => ({ localData: []
我目前正在开发一个 Rails 插件,用于生成 iPhone 特定的 HTML 元标记。我尝试使用 ActionView::TestCase 进行单元测试,但不断收到相同的错误。请参阅下面的文件内容和
我正在努力解决一个与变量声明相关的非常基本的问题。我已经阅读了有关变量的所有内容,但我不知道我的问题是否与 1) 我如何声明变量或 2) 我如何设置变量的范围有关。 首先,我对 Meteor 中变量的
我想知道是否可以将参数传递给 Meteor Helper 并在 HTML 中插入返回对象的属性,而不仅仅是返回最终值。我有这样的东西: HTML: {{#each conversation}}
我正在尝试为我的 Ember 应用程序构建一个新的条件助手。值得一提的是,我正在使用使用 Handlebars 2.0 的 Ember 1.10.1,并且我无法升级它,如果能很好地解决这个版本的 Em
我最近从 Dreamweaver 迁移到 aptana,并尝试使 aptana 尽可能相似;) 已经做了很多更改,但我仍然找不到使代码字体变小的方法(在 Dreamweaver 中代码更清晰,因为字体
我有以下模板: {{#each helperOne "1" "2" }} Lorem upsom {{#each}} helper : template.tempName.h
我有这个简单的代码块,它位于我的一个模板上,但我想将其作为助手放置,以便我的所有 View 都可以访问它。 @hidden(field: Field) = { @defining(field)
使用正则表达式,我正在替换 **text in bold**至 text in bold在一个字符串中,然后显示 message使用 {{{message}}}在我的 EmberJS 模板上。问题是我
是否有任何非常有用和健壮的 C++ 网络库?和库来帮助他们更好地运行?诸如使用 << 时自动进行字节序转换之类的东西,阻止读取直到结构或 w/e 您的读取完全传输,有助于调试协议(protocol)的
模板 {{#each tags}} {{#isObject this}} Object {{else}}
我有返回 JSON 的函数: Template.mainmenu.menuitem = function() { var jsonObj = { items: [ { ur
我是一名优秀的程序员,十分优秀!