我有一个特定的观点,我不想“继承”layouts/application.html.erb
的代码。它应该怎么做?
执行此操作的一种方法是在application.html.erb
中加入:
<% except current_page?(page_path) %>
content
<% end %>
但我觉得更像是你应该在特定视图中指定的内容。这件事的惯例是什么?
答案 0 :(得分:4)
对于一个操作,您可以尝试:
class TestController < ApplicationController
def method_name
render :layout => 'another_layout'
end
end
对于控制器中的所有操作,您可以执行以下操作:
class TestController < ApplicationController
layout 'another_layout'
#action methods here
end
答案 1 :(得分:2)
如果您不希望将布局应用于特定操作,则可以在控制器级别禁用布局渲染。例如,如果您希望MyController#some_action
视图不在布局中呈现,则可以执行以下操作:
class MyContorller < ApplicationController
def some_action
# Your logic here
render layout: false
end
end
这样,您的视图(app/views/my_controller/some_action.html.erb
)不会从application.html.erb
继承,并且只会包含视图文件中的内容。有关渲染的更多信息,您可以查看here
答案 2 :(得分:0)
对于选定的行动,您可以尝试这样......
class MyContorller < ApplicationController
layout 'other_layout_name', only: [:method_1, :method_2, :method_4]
#action methods here
end