【问题标题】:How to specify the layout to render when submitting a form and validation fails?提交表单且验证失败时如何指定要呈现的布局?
【发布时间】:2015-01-30 14:41:09
【问题描述】:

在我的应用程序中,控制器的 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

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

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

  • Ruby 2.2.0
  • Rails 4.2.0

提前致谢。

【问题讨论】:

  • 在此处发布您的 createupdate 方法。您可能是在告诉他们在失败时渲染 newedit,而不指定要使用的布局。
  • 谢谢,我应该把它们贴出来。现在解决了。

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


【解决方案1】:

方法与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

【讨论】:

    猜你喜欢
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多