jQuery欢迎消息,直到关闭一次(Rails 3)

jQuery welcome message that appears until closed once (Rails 3)

本文关键字:一次 Rails 消息 jQuery      更新时间:2023-09-26

我想向首次使用的用户提供一条欢迎消息,直到用户"关闭"消息一次。(通过jQuery的隐藏方法)。

如何才能最好地做到这一点?我正在使用 Rails 3。

根据您网站的详细信息,我建议只使用 cookie 来检查用户是否点击了关闭按钮。 粗略地说,它会是这样的:

if ( ! $.cookie("has_seen_message") ) {
  // show the welcome message
  $("#welcome-message .close_button").click(function() {
    $("#welcome-message").hide();
    $.cookie("has_seen_message", 1);
  });
}

然后你根本不需要在 Rails 端做任何事情。 建模/持久化 UI 行为毫无意义,除非它真的很重要。

为了使欢迎消息在操作之间持续存在,您需要在数据库中保存一些内容以记录用户是否已关闭该消息。 您可以通过向用户模型添加一列来执行此操作:

#new_migration.rb
add_column :users, :display_welcome_message, :boolean, :default => true

在布局/视图中包含一个条件语句,以检查它是否应显示欢迎消息:

<% if current_user.display_welcome_message %>
  <!-- put you welcome message here -->
<% end %>

然后,当用户单击"隐藏"按钮时,您可以让jquery异步调用控制器操作:

$.post('/user/<%= current_user.id %>/close_welcome')

然后创建永久隐藏消息的控制器操作

#users_controller.rb
def close_welcome
  current_user.update_attributes({:display_welcome_message => false})
end

您还需要为此操作创建路由:

#routes.rb
resources :users do
  post 'close_welcome', :on => :member
end

现在我已经打出了这个,它似乎有点啰嗦,也许有人可以想出更整洁的东西。 如果您要有许多不同的消息,您的用户模型可能会变得非常混乱 - 我可能会启动一个新的 MessageAction 模型belongs_to 用户,每种消息类型都有一个布尔字段。