Rails在网站上显示警报,直到用户添加信息?

时间:2014-07-23 15:52:55

标签: ruby-on-rails ruby

在我的Rails应用程序中,每个用户的customer_added布尔值为false;一旦他们添加了他们的信用卡信息,这将变为真。我想要做的是在网站上显示一个警报,其中包含每个页面上显示的信用卡信息页面的链接,直到他们的customer_added布尔值变为真(即他们添加他们的信用卡信息)。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

轻松!您向每个页面添加内容的方式是通过布局。

只需在您想要显示它的布局中添加一些内容(最有可能是app/views/layouts/application.html.erb

<% if current_user && !current_user.customer_added %>
  <div class="alert">
    <p>Looks like you haven't added your billing info yet — <%= link_to "add it now", settings_path %>.</p>
  </div>
<% end %>

(假设您正在使用Devise或以其他方式设置current_user并假设您的样式表定义了.alert的样子。)

所以,如果你有像这样的布局

<!DOCTYPE html>
<html>
<head>
  <title>Store</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>
<div class="container">
  <%= yield %>
</div>
</body>
</html>

您可以将其直接插入容器

<!DOCTYPE html>
<html>
<head>
  <title>Store</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>
<div class="container">
  <% if current_user && !current_user.customer_added %>
    <div class="alert">
      <p>Looks like you haven't added your billing info yet — <%= link_to "add it now", settings_path %>.</p>
    </div>
  <% end %>

  <%= yield %>
</div>
</body>
</html>