很簡單。備忘。
1 生成代碼 script/generate plugin plugin_name
2 init.rb 在運行rails前會載入,並會自動載入lib下的文件
3 寫你自己需要hook的東西
關鍵:如何讓rails能在controller或view裡面使用自己寫的東西
這裡就不需要在使用時候include file 了。
方法一: 在 init.rb 中添加
ActionView::Base.send :include, UrlEnhancerHelper
意思是吧 UrlEnhancerHelper 這個 module 包含在 ActionView::Base 裡面 。
當然這種語法也可以在自己需要的地方添加。
方法二:
module ActsAsExportable
def self.included(base)
base.extend(ClassMethods)
end
class Config
attr_reader :model
attr_reader :model_id
def initialize(model_id)
@model_id = model_id
@model = model_id.to_s.camelize.constantize
end
def model_name
@model_id.to_s
end
end
module ClassMethods
def acts_as_exportable(model_id = nil)
# converts Foo::BarController to 'bar' and FooBarsController to 'foo_bar'
# and AddressController to 'address'
model_id = self.to_s.split('::').last.sub(/Controller$/, '').\
pluralize.singularize.underscore unless model_id
@acts_as_exportable_config = ActsAsExportable::Config.new(model_id)
include ActsAsExportable::InstanceMethods
end
# Make the @acts_as_exportable_config class variable easily
# accessable from the instance methods.
def acts_as_exportable_config
@acts_as_exportable_config || self.superclass.\
instance_variable_get('@acts_as_exportable_config')
end
end
module InstanceMethods
def export_to_xml
data = self.class.acts_as_exportable_config.model.find(:all,
:order => 'title',
:conditions => conditions_for_collection)
send_data data.to_xml,
:type => 'text/xml; charset=UTF-8;',
:disposition => "attachment; filename=\
#{self.class.acts_as_exportable_config.model_name.pluralize}.xml"
end
# Empty conditions. You can override this in your controller
def conditions_for_collection
end
end
end
最後是常用函數
動態定義函數:
define_methods "name" , block
write_attribute
read_attribute
instance_variable_set
instance_variable_get
How to write a Rails Plugin(controller)
分享到:
相关推荐
**Rails 常用插件简介 - CRUD Generator 2** 在Ruby on Rails框架中,开发过程中经常需要创建、读取、更新和删除(CRUD)数据。为了提高开发效率,开发者通常会使用各种插件来自动化这个过程。CRUD Generator 2就是...
Ruby on Rails插件是Rails框架的核心扩展机制,用于弥补Rails本身功能的不足,提供开发者所需的额外特性或功能。Rails插件允许开发人员自定义和增强Rails的任何部分,并且能够以封装和重用的方式与其他开发者共享。...
rails.vim提供了常用的一些命令,可以帮助开发,例如:Rgenerate, Rake, Rfind,RTview等,很方便,也很实用。 安装方法: 拷贝 autoload/rails.vim, plugin/rails.vim, 和 doc/rails.txt 到 ~/.vim 目录. ...
这个插件允许你在Rails应用中轻松地对数据进行分页显示,提高用户体验并减轻服务器压力。 **1. will_paginate插件介绍** `will_paginate`是Rails社区中非常流行的一个分页解决方案,它提供了简洁的API和强大的功能...
**Ruby on Rails 开发环境构建:Eclipse与RadRails 插件详解** 在现代软件开发领域,Ruby on Rails(简称Rails)作为一个强大的Web应用程序框架,因其简洁、高效的特性深受开发者喜爱。而Eclipse,作为一款功能强大...
6. **Rakefile和init.rb**: Rakefile用于定义任务,如安装或更新插件,而init.rb是Rails初始化脚本,负责加载插件。 7. **版本控制(.svn)**: 这个文件可能表示插件曾使用Subversion作为版本控制系统。现代项目更...
在这个“ruby on rails 常用插件下载”中,提到的是一个与多线程相关的插件,可能用于提高应用程序的性能和并发处理能力。 在 Ruby on Rails 中,多线程是一种处理并发请求的方式,尤其在现代硬件支持多核处理器的...
描述中的“NULL”表明没有给出具体的插件列表或详细描述,但通常Rails插件可能包括但不限于数据库管理工具、认证与授权机制、表单处理、搜索引擎优化、日志分析、测试工具、性能监控等类别。通过博文链接...
ruby on rails for eclipse开发插件
在这个场景中,我们关注的是Rails的自动完成、文件上传、分页以及上传进度管理相关的插件。让我们详细了解一下这些关键知识点: 1. **Rails 自动完成**: 自动完成是一种功能,允许用户在输入框中键入时提供预填...
Ruby-智付通金流的Rails插件是一个专门为Ruby on Rails框架设计的工具,它使得开发者能够轻松地将Spgateway这个台湾知名的在线支付服务集成到自己的应用中。这个插件简化了处理支付流程的复杂性,使得在Rails应用中...
本章节将介绍如何安装、使用和开发自己的Rails插件。插件可以提供新的特性或增强现有功能,帮助开发者更快地完成项目。 #### 11. Debugging, Testing, and Benchmarking(调试、测试和基准测试) 高质量的软件离不...
userstamp, 这个 Rails 插件扩展ActiveRecord Userstamp插件( v-2.0 )概述Userstamp插件扩展了 ActiveRecord::Base,以添加对'创建者','更新程序'和'deleter'属性的自动更新。 它是基于 ActiveRecord::Timesta
Exception Notification是一款非常实用的Rails插件,它能够自动捕获并报告应用在运行过程中出现的各种异常情况,帮助开发者及时获取错误信息,提高问题解决效率。 Exception Notification插件的核心功能是在Rack或...