jQuery欢迎消息,直到关闭一次(Rails 3)
jQuery welcome message that appears until closed once (Rails 3)
我想向首次使用的用户提供一条欢迎消息,直到用户"关闭"消息一次。(通过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 用户,每种消息类型都有一个布尔字段。
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 地图,rails 4.2,javascript,鼠标悬停,只工作一次(或两次).然后在重新加载之后
- Rails 4 Ajax 调用只工作一次
- JavaScript 和 radio_button in rails - 状态只检查一次
- 使用Rails在页面上以实时刻度的格式显示当前时间,并每秒更改一次
- rails 3.2:确认删除.在开发中,confim对话框打开一次,但在生产中,它打开三次
- jQuery欢迎消息,直到关闭一次(Rails 3)
- Rails 设置一个 Cookie 以确保只收到一次 Javascript 消息
- RAILS/HTML:每7秒更改一次图像幻灯片