Hello,
Oui justement c'est ma gem ^^ et je veux l'améliorer.
En fait ce n'est pas rare du tout ce dont je parle et parfaitement
prévisible.
Lorsque l'on fait link_to 'texte', @article c'est la même chose.
De la même façon, le redirect_to @article utilise le même principe.
Ça utilise url_for pour générer l'url en utilisant l'url nommée
article_path et en lui passant @article ce qui donne article_path(@article).
Le souci est justement que url_for tente d'appeler article_path qui n'est
pas définie dans le contexte d'ariane.
Je viens de trouver une solution qui fonctionne mais qui, à mon sens, est
complètement dégueulasse ^^
class Base # La classe qui va générer la liste de liens
#...
def method_missing(meth, *args, &block)
if meth =~ /(_path|_url)\Z/
Rails.application.routes.url_helpers.send(meth, *args, &block)
else
super
end
end
Dans un sens, c'est plutôt logique mais à tester déjà c'est un peu la mort
et puis je trouve qu'il y a un petit côté sale dedans.
Enfin après c'est peut être que moi ^^
Simon COURTOIS
On Thursday, May 31, 2012 9:11:36 PM UTC+2, Olivier El Mekki wrote:
>
> Hello,
>
> > C'est cool mais j'aimerais pousser ᅵa un peu plus loin et permettre
> de
> > faire ceci:
> >
> > <% ariane.add un_model.title, un_model %>
>
> ᅵa devrait faire quoi ? La lib ne peut pas dᅵterminer d'elle-mᅵme si
> tu
> veux aller vers une action d'index, de show, voir mᅵme une action
> custom.
>
> La possibilitᅵ de faire `form_for @resource` est un cas rare : si on
> veut un form, c'est qu'on veut modifier un objet. C'est donc soit un
> create, soit un update, qu'on dᅵtermine en regardant si l'objet est un
> new_record? ou non.
>
> Ici, ce n'est pas devinable de la mᅵme maniᅵre - ᅵa peut ᅵtre
> n'importe
> quelle url.
>
> Mais je vois que Simon est l'auteur de cette gem, donc je le laisse te
> rᅵpondre au cas oᅵ :)
>
>
> --
> Olivier El Mekki.
>
--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse
[email protected]