我放了:
map.connect '/:alias', :controller => 'cores' ,:action=>"view"
此别名与3个模型连接:事件地点和艺术家 在我的核心控制器中,我使用render_component来渲染相对于模型的动作。
if(core = Core.find(:first, :conditions => ["alias = ?", params[:alias]]))
type = core.class.to_s.downcase
render_component(:controller => type,
:action => "view",
:id => core.id.to_s,
:params => params)
end
在rails 2.3中,不推荐使用render_component。但这样做的解决方案是什么?
我已经看到有一个插件可以重用render_component,但我想知道另一个解决方案。
感谢。
答案 0 :(得分:0)
唯一的解决方案是重新设计您的架构以避免组件。
我必须维护一个基于组件的应用程序,我不得不说这是一个真正的噩梦。我最近将应用程序升级到Rails 2.3,我真的很期待尽快杀死组件集成。
如果您决定继续使用组件,请记住现有的插件不适用于Rails 2.3。您应该进行一些更改才能使其正常工作。
答案 1 :(得分:0)
还有另一个部分解决方案。
我在“临终关怀”模式下正在寻找一个Rails应用程序,所以虽然正确的答案肯定要重新设计以避免组件,但我需要支持render_component,同时升级到Rails 2.3。
临时解决方案是安装render_component插件:
script/plugin install git://github.com/lackac/render_component.git -r rails-edge
您必须在服务器上安装git客户端才能使此安装正常运行;如果不是你会得到一个沉默的失败。