0

我需要将我所有的 Flash 通知放在标题下方,除了一页。

只有在一页上,我应该以不同的方式放置它。

编辑

我在我的动作中添加了,我想在这行中使用另一个布局:

  render :layout => 'show'

现在,当我要显示页面时,它给了我:

  undefined method `url' for nil:NilClass

但没有呈现这个布局 - 没有错误。

编辑

在 Rails 中可以吗?

4

2 回答 2

2

在我的脑海中,你可以在视图中检查当前的控制器#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
于 2012-10-04T16:25:25.597 回答
0

这很容易在任何地方显示 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;
}
于 2015-06-30T13:08:40.130 回答