Ruby on rails 为站点上的所有页面设置内容

Ruby on rails 为站点上的所有页面设置内容,ruby-on-rails,ruby-on-rails-4,model-view-controller,Ruby On Rails,Ruby On Rails 4,Model View Controller,我在application.html.erb中有一个收益率 <%= yield(:alert_area) %> 。。。我想为站点上的每个页面(使用布局)设置此区域的内容。无法在视图中硬编码内容,因为它只能在某些情况下显示(例如,“您的配置文件不完整,请单击此处完成!”) 我该怎么做?我知道我可以尝试在ApplicationController中为使用content\u,但将内容放入控制器似乎打破了MVC模式。另外,无论如何,我这样做是走到了死胡同 Rails MVC在站点的每个

我在
application.html.erb
中有一个
收益率

<%= yield(:alert_area) %>

。。。我想为站点上的每个页面(使用布局)设置此区域的内容。无法在视图中硬编码内容,因为它只能在某些情况下显示(例如,“您的配置文件不完整,请单击此处完成!”)

我该怎么做?我知道我可以尝试在
ApplicationController
中为
使用
content\u,但将内容放入控制器似乎打破了MVC模式。另外,无论如何,我这样做是走到了死胡同


Rails MVC在站点的每个页面上粘贴动态内容的正确方法是什么?

最好的方法是使用
flash
,它存储在会话中,设置后只显示一次

例如:

application.html.erb:

<span class="error"><%= flash[:error] %></span>

正如bukk530所建议的,使用
呈现
/
部分
构造,而不是
产生
/
内容(u
构造
/
部分
构造,并且在部分中只具有一个条件,这样它只在您想要的时候呈现某些内容。例如

- flash.each do |name, message|
  %div{ class: "flash flash-#{name}" }= message

哎呀。我以前怎么没看到这个?我想我只是需要休息一下!是的,老实说,我不知道为什么标准Rails布局模板不包括这样的内容。
- flash.each do |name, message|
  %div{ class: "flash flash-#{name}" }= message