控制器的不同布局与Rails中的respond_to

时间:2014-02-11 23:57:31

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2 erb

我知道我可以使用render调用layout: 'my_layout'方法来更改控制器方法中的布局。但是,我的一些控制器方法具有以下内容,因此我也可以轻松地呈现JSON:

respond_to do |format|
  format.html
  format.json { render json: @cars }
end

如何更改format.html的布局?我应该用format.html替换render layout: 'my_layout'吗?我可以选择传递给format.html吗?

1 个答案:

答案 0 :(得分:10)

默认情况下,Rails将使用app/views/layouts/application.html.erb作为布局。如果您想使用其他布局,请创建app/views/layouts/my-new-layout.html.erb然后

在您的控制器方法中:

respond_to do |format|
  format.html { render layout: 'my-new-layout' }
  format.json { render json: @cars }
end

以下是Rails指南中的相关部分:Layouts and Rendering: Options for Render