我想向首次出现的用户提供欢迎消息,直到用户“关闭”消息一次为止。 (通过jQuery的隐藏方法)。
如何才能最好地完成这项工作?我正在使用Rails 3。
答案 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用户,每个消息类型都有一个布尔字段。