2016-04-24 50 views
0

如何渲染新的动作没有应用程序布局和而不更改以下代码结构如何使用Ajax呈现不带布局的HTML格式的Rails动作?

class FoobarController < ApplicationController 

    def new 
    @foobar = Foobar.new 
    end 

    # ... 
end 

所以,当有人点击= link_to new_foobar_path应该触发呈现的行动没有HTML应用程序布局和通过Ajax的JS事件。

回答

1

如果你能负担得起改变动作一点点,你可以做到这一点:

class FoobarController < ApplicationController 

    def new 
    @foobar = Foobar.new 
    if request.xhr? # checks whether its an ajax call 
     render partial: 'new' 
    else 
     render # thats it 
    end 
    end 

    ... 
end 
+0

这工作,但它改变了代码结构。我已经通过覆盖'ApplicationController'中的'render'方法来解决它。 – Marc

+0

默认情况下,@Marc rails充满了多种形式的抽象。以猴子补丁的形式,覆盖等等。现在,您想要重写渲染方法的行为,以便在实现您已经重写默认渲染的行为之前,任何来自您之后的人都会被至少5分钟的行为困惑,以至于一个控制器中的动作看起来不错?成为我的客人:) –

+0

是的,这是一种反模式,我知道。但它是Ruby,所以......;) – Marc