Приветственное сообщение jQuery, которое появляется до закрытия один раз (Rails 3) - PullRequest
1 голос
/ 18 мая 2011

Я хотел бы подарить начинающему пользователю приветственное сообщение, которое появляется, пока пользователь не закроет сообщение один раз. (с помощью метода скрытия jQuery).

Как это лучше всего сделать? Я использую Rails 3.

Ответы [ 2 ]

3 голосов
/ 18 мая 2011

В зависимости от деталей вашего сайта, я бы порекомендовал использовать куки, чтобы проверить, нажал ли пользователь кнопку закрытия или нет. Грубо говоря, это было бы примерно так:

if ( ! $.cookie("has_seen_message") ) {
  // show the welcome message

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

Тогда вам вообще ничего не нужно делать на стороне Rails. Нет смысла в моделировании / сохранении поведения пользовательского интерфейса, если это действительно не важно.

1 голос
/ 18 мая 2011

Чтобы приветственное сообщение сохранялось между действиями, вам нужно что-то сохранить в базе данных, чтобы записать, закрыл ли пользователь сообщение.Это можно сделать, добавив столбец в модель пользователя:

#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

Теперь, когда я это напечатал, это кажется немного скучным, возможно, кто-то может придумать что-то более изящное.Если бы у вас было много разных сообщений, ваша модель User могла бы стать очень запутанной - я бы, вероятно, запустил новую модель MessageAction для пользователя assign_to, с логическим полем для каждого типа сообщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...