如何在提交表单时指定要呈现的布局并且验证失败?

时间:2015-01-30 14:41:09

标签: ruby-on-rails ruby ruby-on-rails-4

在我的应用中,控制器的newedit操作应该呈现不同的模板而不是默认布局,如下所示(它不是普通的rails应用程序,而是引擎)。

module Blorgh
  class ArticlesController < ApplicationController

    layout Blorgh.config.layout # Configured in initializer

    ...

    # GET /articles/new
    def new
      @article = Article.new
      render :new, layout: "blorgh/new"
    end

    # GET /articles/1/edit
    def edit
      render :edit, layout: "blorgh/edit"
    end

    ...
  end
end

它按预期工作,但是当通过在POST createPATCH update页面中提交表单,newedit操作验证失败时,它们将使用默认布局呈现

如何在这种情况下指定布局?

  • Ruby 2.2.0
  • Rails 4.2.0

提前致谢。

1 个答案:

答案 0 :(得分:3)

执行此操作的方式与newedit操作相同:

def update
  # ...
  render :edit, layout: 'blorgh/edit'
end

def create
  # ...
  render :new, layout: 'blorgh/new'
end

顺便说一句,在您的newedit操作中,您无需指定要手动呈现的模板。没关系,你可以:

def new
  # ...
  render layout: 'blorgh/new'
end

def edit
  # ...
  render layout: 'blorgh/edit'
end