J'ai actuellement une liste générique qui est générée par ActiveScaffold. À la fin de chaque ligne de la liste, ActiveScaffold ajoute les liens CRUD standard - Afficher, Modifier, Supprimer - pour chaque enregistrement.Substituer show/edit/etc comportement dans ActiveScaffold
Je ne souhaite pas utiliser ActiveScaffold pour ces actions (longue histoire) et j'ai créé mes propres contrôleurs pour gérer cela. J'essaie de contourner ces liens pour pointer vers mes propres contrôleurs, mais je n'arrive pas à comprendre comment passer l'identifiant de l'enregistrement.
Par exemple, que je veux le nouveau lien pour Afficher être /foo/show/[id] - J'ai dans ma configuration ActiveScaffold:
config.show.link.action = "show"
config.show.link.parameters = {:controller => "foo", :id => ???}
Je ne sais pas quoi passer dans le paramètre id. J'ai essayé d'utiliser des choses comme: foo_id, ou foo_id, mais le contrôleur ne sait pas ce qu'ils sont. Quand j'utilise: foo_id, par exemple, je viens d'obtenir la chaîne - /foo/show/foo_id.
Mon contrôleur est ci-dessous, mais il n'y a pas grand-chose.
class MessagesController < ApplicationController
active_scaffold :messages do |config|
config.columns = [:eff_date, :exp_date, :type, :message]
config.show.link.action = "show"
config.show.link.parameters = {:controller => "show_messages", :id => ??}
end
end
Je voudrais continuer à utiliser ActiveScaffold pour l'écran de la liste parce que je ne veux pas vraiment avoir à rouler ma propre version de la liste. J'ai trouvé un gars qui posait la même question dans googlegroups mais il n'y avait pas de réponse.
http://www.mail-archive.com/[email protected]/msg00798.html
Edit: Je dois ajouter que ne pas spécifier le paramètre: id ne en fait mettre la valeur par défaut ActiveRecord ID dans le champ, mais il est pas tout à fait celui que je veux - encore une fois, longue histoire ...: (