Share methods in Controller and Helper (Rails)
在Ruby on Rails里面,首先应该明确的一点 —– Helper是view的helper,根据这个原则,在默认实现下,controller是不允许访问helper里面的方法的。当然helper在本质上是一个module,所以要在controller和helper之间共享一些方法的办法还是很多的。因为是双方都拥有的方法,所以就面临一个问题 —— 方法放在那里比较合理?controller还是helper?我阐述一下我的原则:
如果方法中需要引入其他helper方法,那么我们建议该方法放在helper中;否则,可以放在controller中或者写一个公共module。放在controller里面需要注意安全性,因为controller里面public的方法很有可能通过URL加以执行,所以我们建议所有的helper 方法都用private 加以约束。
下面我就详细说一下4中方法。
Helper方法放在controller中,通过ApplicationHelper来实现公用。代码存在一定的安全隐患。
module ApplicationHelper
def method_missing(method, *args, &block)
if ApplicationController.instance_methods.include? method.to_s
controller.send(method, *args, &block)
else
super
end
end
end
Helper方法放在controller中,通过helper_method来实现公用。代码安全。
private
heper_method :login?
def login?
# your logic goes here
end
Helper方法放在Helper中,通过include module_name向controller暴露,代码安全
include FullModuleName
Helper方法放在一个独立的module中,helper和controller通过include这个module来获得公共方法。
include CommonModuleName
关于include module需要注意的是,它不会帮助你去自动解决module依赖性的问题。
分享到:
- 2007-09-06 12:52
- 浏览 2513
- 评论(4)
- 论坛回复 / 浏览 (4 / 4815)
- 查看更多
相关推荐
If you already have experience in XML, you will probably benefit by using the methods available in XmlHelper. The article evolves from simple concepts about XML to creation of XML documents, to ...
视图助手(Helper methods)是一系列用于帮助生成视图内容的函数,比如form_for、link_to等,它们可以使视图代码更简洁,更易于理解。 **6. Routing** Rails的路由系统(routes.rb)将URL映射到控制器的特定动作上...
npm install git+https://github.com/riteshsangwan/serenity-controller-helper.git 依赖关系 宁静数据源(访问数据源) serenity-route-helper(处理响应) serenity-param-helper(解析请求查询过滤器) ...
5. **辅助方法(Helper Methods)**:为视图提供便利的功能,如链接生成、样式辅助等。 6. **Scaffold**:快速开发工具,可以自动生成用于CRUD(创建、读取、更新、删除)操作的基本控制器、模型和视图。 7. **...
### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...
通过 npm 和 git 安装 npm install git+https://github.com/appirio-tech/lc1-node-controller-helper.git依赖关系lc1-node-datasource(访问数据源) lc1-node-route-helper(处理响应) lc1-node-param-helper...
视图方面,会涵盖ERB模板语言的使用,以及如何利用辅助方法(Helper Methods)来增强视图的功能。控制器部分则会介绍动作、HTTP请求和响应,以及如何使用过滤器来实现逻辑控制。 书中还会涉及Rails的测试驱动开发...
Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...
Ruby on Rails,简称Rails,是一款基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在提升开发效率和代码的可读性。Rails以其“约定优于配置”的设计理念,以及“DRY(Don't Repeat ...
Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,强调“约定优于配置”和“Don't Repeat Yourself”(DRY)原则,从而提高开发效率。 本教程首先会...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,极大地简化了Web应用的开发过程。Rails的哲学是“约定优于配置”,鼓励开发者遵循一套标准的...
在Rails中,这些组件通过ActiveRecord、ActionView和ActionController被实现。 3. **ActiveRecord**:这是Rails用于数据库交互的ORM(对象关系映射)库。它允许开发者使用Ruby代码操作数据库,无需编写SQL语句。 4...
webdriver-helper安装包,whl版本
6. **辅助方法(Helper Methods)**:为视图提供了一些实用的函数,如链接生成、表单构建等,帮助保持视图的简洁。 7. **插件(Plugins)**:Rails 社区提供了大量的插件,可以扩展框架的功能或提供特定的解决方案...
以及Rails框架的核心概念,如路由(Routing)、控制器(Controllers)、视图(Views)、模型(Models)、ActiveRecord、助手方法(Helper Methods)、会话(Sessions)和缓存(Caching)等。 实际操作时,你需要先...
Rails :: Controller :: Testing 这个gem将assigns给控制器测试的内容... 如果您使用的是rspec-rails的旧版本,则可以在rails_helper手动添加模块。 RSpec . configure do | config | [ :controller , :view , :re
在C#编程中,"Helper"类是一种常见的设计模式,用于封装特定功能或一组相关功能,使得代码更易于理解和维护。这些Helper类通常包含了对常用数据类型、文件操作、网络通信等的便捷处理方法。以下将详细介绍标题和描述...
gem 'foundation_rails_helper' , '~> 3.0' 然后执行: $ bundle 兼容性 仅完全支持Rails 4.1 / 4.2 / 5/6和Foundation 6 某些功能可能适用于Foundation 5及更早版本,但结果可能会有所不同,并且