我需要将我所有的 Flash 通知放在标题下方,除了一页。
只有在一页上,我应该以不同的方式放置它。
编辑
我在我的动作中添加了,我想在这行中使用另一个布局:
render :layout => 'show'
现在,当我要显示页面时,它给了我:
undefined method `url' for nil:NilClass
但没有呈现这个布局 - 没有错误。
编辑
在 Rails 中可以吗?
我需要将我所有的 Flash 通知放在标题下方,除了一页。
只有在一页上,我应该以不同的方式放置它。
编辑
我在我的动作中添加了,我想在这行中使用另一个布局:
render :layout => 'show'
现在,当我要显示页面时,它给了我:
undefined method `url' for nil:NilClass
但没有呈现这个布局 - 没有错误。
编辑
在 Rails 中可以吗?
在我的脑海中,你可以在视图中检查当前的控制器#action,看看我们的 flash 消息是否需要移动。
Rails 将这些参数传递给每个视图(例如:如果我们在 的show
操作中UsersController
):
params[:controller] #=> users
params[:action] #=> show
我们可以添加一个助手来简化视图中的条件:
# file: app/helpers/application_helper.rb
def move_flash_messages?
params[:controller] == "users" && params[:action] == "show"
end
然后在我们的布局中做这个简单的检查:
# file: app/views/layouts/application.html.haml
- unless move_flash_messages?
= flash_messages
...
- if move_flash_messages?
= flash_messages
这很容易在任何地方显示 Flash 消息
<% flash.each do |name, msg| %>
<%= content_tag :div, msg, class: "flash notice" , id:"flash_notice" %>
<% end %>
这是用于 Flash 消息的 css
div.flash.notice {
background: url(../images/true.png) 8px 5px no-repeat;
background-color: #dfffdf;
border-color: #9fcf9f;
color: #005f00;
}