2014-01-29 2 views
0

Уведомления принадлежат пользователям и пользователям.Очистить уведомления пользователей

На выставке пользователя (users_controller.rb) действие, которое я получать уведомления пользователя по:

def show 
    ... 
    @notifications = current_user.notifications if current_user 
end 

Уведомления отображаются правильно, но я хочу, чтобы пользователь, чтобы иметь возможность удалить его/ее уведомления. Я поместил это в UsersHelper.rb:

def clearNotifications(notifs) 
    destroynotifs = notifs.destroy 
    end 

Мое мнение (пользователи/show.html.erb), который не имеет смысла, это:

<div id="clearnotifications"> 
    <% clearNotifications(@notifications) %> 
    clear notifications 
</div> 

Есть три вопроса, я обеспокоен :

  1. Это хорошая практика?
  2. Как я могу назвать эту функцию из текста в представлении? (link_to?)
  3. Должен ли я называть users.save или notifications.save?

Заранее благодарим за любые советы/рекомендации. Если вам нужна дополнительная информация, дайте мне знать, и я добавлю ее сразу.

ответ

1

первым создать контроллер notifications_controller теперь routes.rb get "notifications/clear" создавать четкие действия в контроллере уведомлений

def clear 
    current_user.notifications.delete_all 
    render nothing: true# or whatever you want to render 
end 

сейчас зрения

<%= link_to "delete", notifications_clear_path, remote: true %> 
+0

Спасибо. Позвольте мне попробовать. Кстати, у меня есть контроллер уведомлений при создании уведомлений; перед удалением их. –

1

Должно быть выполнено действие контроллера (users_controller#delete_notifications или notification_controller#delete_all или что-то еще), что делает удаление уведомлений.

Тогда вы можете, например, вызвать это действие из javascript.

Ключевой момент: этот мнимый мост html-ruby не существует.

<div id="clearnotifications"> 
    <% clearNotifications(@notifications) %> 
    clear notifications 
</div> 

Вы не можете вызвать серверный код таким образом. Чтобы удалить уведомления, вам необходимо отправить запрос (щелкнув ссылку, чтобы перезагрузить страницу или отправить асинхронный запрос с помощью javascript).

См. Документы на jQuery.ajax, например.

+0

О представлении, вот почему я упомянул: «Мой взгляд (пользователи/show.html.erb), который не имеет смысла " –

Смежные вопросы