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

时间:2011-05-18 00:00:32

标签: javascript jquery ruby-on-rails ajax ruby-on-rails-3

我想向首次出现的用户提供欢迎消息,直到用户“关闭”消息一次为止。 (通过jQuery的隐藏方法)。

如何才能最好地完成这项工作?我正在使用Rails 3。

2 个答案:

答案 0 :(得分: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行为毫无意义,除非它非常重要。

答案 1 :(得分:1)

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

#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用户,每个消息类型都有一个布尔字段。