rails plugin是什麼,自己google吧 :wink:
生成plugin骨架**:
ruby script\generate plugin myplugin
功能需求:
在blogcontroller中把所有符合條件的post(model)生成為xml
如果不使用外掛程式,很easy :
in blogcontroller
def export_to_xml
posts = post.find(:all, :order => 'published_date',
:conditions => ['title = ?', 'love'])
send_data posts.to_xml, :type => 'text/xml; charset=utf-8;',
:disposition => "attachment; filename=posts.xml"
end
如果使用外掛程式,我們要求能這樣:
ok,立刻滿足以上的要求,進入你的project:
生成plugin
ruby script\generate plugin myplugin
and than to find:
vendor/plugins/my_plugin/lib/my_plugin.rb
接著就是edit了:
module myplugin
def self.included(base)
base.extend(classmethods)
endclass config
attr_reader :model
attr_reader :model_id
def initialize(model_id)
@model_id = model_id
@model = model_id.to_s.camelize.constantize
enddef model_name
@model_id.to_s
endend
module classmethods
def my_plugin(model_id = nil)
model_id = self.to_s.split('::').last.sub(/controller$/, '').pluralize.singularize.underscore unless model_id
@my_plugin_config = myplugin::config.new(model_id)
include myplugin::instancemethods
enddef my_plugin_config
@my_plugin_config || self.superclass.instance_variable_get('@my_plugin_config')
endend
module instancemethods
def export_to_xml
data = self.class.my_plugin_config.model.find(:all, :order => 'published_date', :conditions => conditions_for_collection)
send_data data.to_xml, :type => 'text/xml; charset=utf-8;',
:disposition => "attachment; filename=#.xml"
end# 在controller中覆蓋此method,寫入滿足的條件
def conditions_for_collection
endend
end
ok了嗎? no no no 還要讓rails載入plugin,在rails應用啟動時,會到vendor/plugins目錄查詢所有plugin,並執行其中的init.rb
那麼就edit init.rb
actioncontroller::base.class_eval do
include myplugin
end
或edit這樣:
require 'my_plugin'
actioncontroller::base.send :include, myplugin
最後就按上面的需求寫入controller了 :arrow:
如何寫乙個Stack?
1.棧是陣列 2.先進後出 3.出棧 4.入棧 手寫乙個雙向鍊錶 棧 public class stackpopandpush public stackpopandpush int lens 返回元素個數 public intsize 返回陣列長度,容量,棧資料長 private intcapaci...
如何寫乙個鍊錶
有的時候,處於記憶體中的資料並不是連續的。那麼這時候,我們就需要在 資料結構中新增乙個屬性,這個屬性會記錄下面乙個資料的位址。有了這個位址之後,所有的資料就像一條鍊子一樣串起來了,那麼這個位址屬性就起到了穿線鏈結的作用。相比較普通的線性結構,鍊錶結構的優勢是什麼呢?我們可以總結一下 1 單個節點建立...
如何寫乙個Vue元件
寫的是以.vue結尾的單檔案元件的寫法,是基於webpack構建的專案。template 模板 js 邏輯 css 樣式 每個元件都有屬於自己的模板,js和樣式。如果將乙個頁面比喻成一間房子的話,元件就是房子裡的客廳 臥室 廚房 廁所。如果把廚房單獨拿出來的話,元件又可以是刀 油煙機.等等。就是說頁...