我正在学习RoR,并且我正在尝试解决一般设计问题。我想在答案上得到一些意见,以确保我遵循某种最佳做法。如何在Ruby on Rails中使用子控制器?
我有一个由3个小节组成的页面,我们称它们为A,B和C.某些操作会通过AJAX刷新其中的每一个,因此我希望让它们每个都有一个控制器操作,允许任何他们单独渲染,没有页面镶边。
我现在已经构成此权利的方法是使用具有4分的动作的控制器:指数,A,B,C
每个A,B和C呈现其与布局视图=> false,以便我可以在需要时通过AJAX渲染那件作品。然后,你有索引,它呈现了一些额外的东西,以及A,B和C的视图。
本质上我想要的是3个子控制器和一个主控制器,根据需要调用子控制器。或者我认为这就是我想要的。我认为我不想要的是部分视图,因为我在控制器中为A,B,C和I中的每一个设置了一些设置,然后必须在控制器中为索引和控制器复制设置代码A,B,C。
我心目中的代码是这样的:
my_controller.rb:
class MyController < ApplicationController
def index
@aOutput = A
@bOutput = B
@cOutput = C
render //can use @aOutput, @bOutput, @cOutput in the view
end
def A
render :layout => false
end
def B
render :layout => false
end
def C
render :layout => false
end
end
这将使我现在访问#myController的指数时,我想整个页面,并#myController的A等,我想重新呈现每个小节的内容。
这里的问题是,如果代码的结构如此,访问MyController#索引时将遇到DoubleRender错误。处理这类事情的正确方法是什么?随意炸掉我在这里做出的任何假设,唯一的要求是有三个部分的页面,可以根据需要单独更新,而无需重新加载整个页面。
此答案并不是非常有帮助。这是一个常见的设计:在页面内部有一些页面可以通过AJAX根据需要进行替换。 我会想象每个可替换的部分对应于Rails动作,并且整个页面也是如此。我只是没有看到如何正确地把这些碎片放在一起。如果这是失败或违反了一些设计原则,我很想知道如何。只是随意地静下来,它违反了一些缩写,并告诉我读一本书根本没用。如果我想读一本书,我不会在这里问。 – LAW
所以你宁愿问一些关于stackoverflow的问题_因为你不想读书?只需使用Google搜索[“实体设计原则”](http://www.google.co.in/search?sourceid=chrome&client=ubuntu&channel=cs&ie=UTF-8&q=SOLID+design+principles&qscrl=1)将为您带来足够的信息第一个结果让你明白我的意思。但看起来你甚至不想这样做。 – Chirantan