2016-03-03 3 views
1

J'ai une application rails avec des notifications. La notification a l'attribut :checked_atdatetime. Sur la page d'index de notification, je lier chaque notification à l'objet notifiable comme <%= link_to posts_path(anchor: "post_#{notification.notifiable_id}") do %>.rails action supplémentaire en cliquant sur le lien

Ce que je veux réaliser est en cliquant sur ce lien (qui prend à l'objet notifiable) le notification.checked_at attribute serait mis à jour. J'ai quelques solutions différentes dans mon esprit comme un appel AJAX supplémentaire en cliquant sur le lien OU ayant une route supplémentaire comme notifications#check_notification l'aide lien pointerait et après avoir vérifié l'attribut, il redirigerait vers la page originale posts#index.

Je ne suis pas sûr lequel est le moyen préféré (peut-être un 3ème) dans les rails. Est-ce que sby pourrait me dire quoi faire?

Répondre

1

Vous pouvez ajouter un autre paramètre à la route, quelque chose comme update_checked_at, puis sur votre action index à l'intérieur du contrôleur, vous vérifiez si elle existe et il est true. MurifoX, est-ce la convention des rails?

<%= link_to posts_path(
    anchor: "post_#{notification.notifiable_id}", 
    update_checked_at: true) do %> 

def index 
    if params[:update_checked_at] 
    # Do your thing 
+0

Cela fonctionne juste les params dans l'URL ne semblent pas si bon. –

+0

@SzilardMagyar La convention de rails vous dit de créer un itinéraire personnalisé et vous faire quelque chose. =] – MurifoX

+0

MurifoX, mais comment? Souhaitez-vous le faire via un appel AJAX séparé ou un travail en arrière-plan ou tout simplement aller à cette action d'abord, puis l'action redirect_to posts_path? –