2014-04-04 124 views
0

这里是一个频繁的情况:用户有一个仪表板为了向用户显示一些相关的信息。此外,使用可以在他的仪表板中执行一些操作。根据抽象,每个这些动作都有自己的控制器,它们并不都在仪表板控制器中。例如,为了更新有关用户的某些信息,您有user controller而不是dashboard controllerdashboard controller仅用于呈现一些信息。
好吗?现在您的仪表板中有一个表单,将输入发布到任意控制器,并且我们想要在仪表板中呈现结果(成功时为成功消息,如果失败,则预填充表单,如果失败则显示错误)。如果我们在控制器中使用redirect_to,我们将失去验证错误和预先填充。如果我们使用render,那么仪表板模板中将会有未被证实的变量,我们会遇到一些错误。
处理这个问题有哪些技巧?
P.S:有一些类似的问题,但答案是使用render,但它导致了上述问题,不起作用。轨道保持模型验证错误

回答

1

你可以通过ajax来完成,并根据成功/失败删除/添加合适的html元素。

或者你可以有

if @user.save? 
    redirect_to dashboard_path 
else 
    @my_instance_variable = InstanceVariable.first 
    render "dashboard" 
end 
+0

实例变量无关这个控制器断裂抽象。不是吗? – Pooya

+0

是的,但是为了你想要的选择,要么做或者使用ajax。如果你使用的是rails 4,你可以把它们放在一个包含 –

+0

的问题中,或者只是用一个在before_filter中调用的私有控制器方法来获取它们 –