ruby-on-rails – 在Rails的一个视图中使用多个控制器
发布时间:2020-12-17 04:35:03 所属栏目:百科 来源:网络整理
导读:我正在研究类似社交网络的东西;我正在使用来自各种网站的不同API,例如Last.FM,Delicious,Twitter,… 我为每个网站创建了一个控制器(目前有7个). 示例视图: localhost:3000/lastfm - All datas i gathered from user's Last.fm accountlocalhost:3000/twitte
我正在研究类似社交网络的东西;我正在使用来自各种网站的不同API,例如Last.FM,Delicious,Twitter,…
我为每个网站创建了一个控制器(目前有7个). 示例视图: localhost:3000/lastfm <- All datas i gathered from user's Last.fm account localhost:3000/twitter <- All datas i gathered from user's Twitter account ... 现在我想通过使用这些不同的控制器在一个视图(localhost:3000 / index.hmtl)中显示这些数据. 不推荐使用组件,创建一个控制器并将所有API埋入其中也很难看. 所以我不知道该怎么做.任何的想法? 解决方法
首先,您应该将所有数据存储和数据收集方法放入资源和模型中,以便可以从所有控制器访问它们.您可以在单个控制器中保留内部数据变更操作.一旦你有这样的组织,你就可以做Hobo所做的事情:为头版创建一个控制器,如果你愿意的话,创建一个“front_controller”.在这里,您可以显示从所有模型和资源收集的数据,以及指向其他控制器操作的链接.
这些是更好地组织你的模型和控制器的一些interesting thoughts(胖模型,瘦的控制器是经验法则. 这里有一些伪代码,请记住它真的只针对你的问题. # pseudo code class TwitterController < ApplicationController def index @services = { :twitter => TwitterModel.find(:all,...),} end def update_twitter TwitterUpdaterClass.update { |twit| _m = TwitterModel.new _m.message = twit.msg _m.from = twit.from # .. _m.save } end end class MyIndexController < ApplicationController def index @services = { :twitter => TwitterModel.find(:all,:lastfm => LastFmModel.find(:all,...) } end end 让后台工作者更新你的休息服务而不是每次你想要获取最近的推文时需要调用的控制器可能会好得多. # more pseudo code class TwitterWorker < BackgrounDRb::MetaWorker set_worker_name :twitter_worker def create(args = nil) # instead of TwitterController.update_twitter TwitterUpdaterClass.update { |twit| _m = TwitterModel.new _m.message = twit.msg _m.from = twit.from # .. _m.save } end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |