REST, resources imbriquées et helpers d'ur l

Bonsoir,

j’ai 2 ressources imbriquées :

routes.rb :

map.resources :films do |film|
film.resources :affiches
end

et dans ma vue :

<%=link_to_remote(“Supprimer l’affiche”, {:url => affiches_url(:film_id
=> @film.id, :id => @film.affiche.id), :method => :delete, :confirm =>
“êtes-vous sûr ?”})%>

et voici le code html généré :

Supprimer l’affiche

c’est quoi cette url pas du tout rest : /films/1/affiches?id=9
ne devrait-elle pas être plutôt de la forme : /films/1/affiches/9 ?

du coûp, forcement cela ne fonctionne pas très bien…

quelqu’un a t’il une idée ?

JD

On Nov 7, 2007 5:42 PM, Jérémy Dierx [email protected] wrote:

{asynchronous:true, evalScripts:true, method:‘delete’}); }; return
false;">Supprimer l’affiche

c’est quoi cette url pas du tout rest : /films/1/affiches?id=9
ne devrait-elle pas être plutôt de la forme : /films/1/affiches/9 ?

du coûp, forcement cela ne fonctionne pas très bien…

quelqu’un a t’il une idée ?

JD

Je ne suis pas sur que cela change grand chose, mais essaie :

affiches_url(@film, @film.affiche)


Fabien J.

Le jeudi 08 novembre 2007 à 12:00 +0100, Fabien J. a écrit :

end
Ajax.Request(‘http://localhost:3007/films/1/affiches?id=9’,
JD

Je ne suis pas sur que cela change grand chose, mais essaie :

affiches_url(@film, @film.affiche)

Merci Fabien pour ton aide. Non cela ne fonctionne pas et j’ai compris
pourquoi : problème de singulier sur la ressource affiche :-/

du coup, la déclaration dans mon routes.rb devient :

map.resources :films do |film|
film.resources :affiches, :singular => ‘affiche’
end

Le dicton Rails du jour : Méfiez-vous des singuliers-pluriels ou codez
en anglais !

Jérémy :

c’est quoi cette url pas du tout rest : /films/1/affiches?id=9

Cet url est tout à fait restful-compliant à partir du moment
où ça correspond à une ressource et que l’on peut appliquer
les verbes HTTP.

Rien n’empêche d’écrire une appli Rails qui propose une api REST
et qui utilise ce genre d’urls.

Est-ce que ces urls sont jolis (pretty url) ? non. Est-ce que
çasuit les conventions de Rails en matière de ressources ? non.

ne devrait-elle pas être plutôt de la forme : /films/1/affiches/9 ?

du coûp, forcement cela ne fonctionne pas très bien…

quelqu’un a t’il une idée ?

film_affiches_url(@film, @affiche)

  • inflexion

plus tard :

Merci Fabien pour ton aide. Non cela ne fonctionne pas et j’ai compris
pourquoi : problème de singulier sur la ressource affiche :-/

Coïncidence, Patrick avait un problème avec ‘fiche’ juste quelques jours
avant :

http://groups.google.com/group/railsfrance/browse_thread/thread/bd530f8022e5b585/12cfef8572e4c401#12cfef8572e4c401

du coup, la déclaration dans mon routes.rb devient :

map.resources :films do |film|
film.resources :affiches, :singular => ‘affiche’
end

Le dicton Rails du jour : Méfiez-vous des singuliers-pluriels ou codez en anglais !

Méfiez-vous des pieuvres.

– Jean-François.


Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)

Jérémy :

rake aborted!
uninitialized constant Inflector

si je commente mon inflection, biensur ce message disparait.

Une idée ?

tu es sûr que tu as mis ce code à la fin d’environment.rb et non
à l’intérieur du block attaché à l’appel de Rails::Initializer.run ?

– Jean-François.


Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)

Le mercredi 14 novembre 2007 à 21:44 +0100, Jean-François Trân a écrit :

Est-ce que ces urls sont jolis (pretty url) ? non. Est-ce que ça

  • inflexion

du coup, la déclaration dans mon routes.rb devient :

map.resources :films do |film|
film.resources :affiches, :singular => ‘affiche’
end

Le dicton Rails du jour : Méfiez-vous des singuliers-pluriels ou codez en anglais !

Méfiez-vous des pieuvres.

Je m’en méfierai à présent.

Par contre, depuis que j’ai ajouté ma nouvelle règle d’inflection dans
environment.rb :

Inflector.inflections do |inflect|
inflect.irregular ‘affiche’, ‘affiches’
end

quand je lance un rake db:migrate ou même une generate, j’obtiens le
message d’erreur suivant :

rake aborted!
uninitialized constant Inflector

si je commente mon inflection, biensur ce message disparait.

Une idée ?

JD

Le jeudi 15 novembre 2007 à 13:07 +0100, Jean-François Trân a écrit :

le
à l’intérieur du block attaché à l’appel de Rails::Initializer.run ?

Super merci JF !

Effectivement mon inflection se trouvait à l’intérieur de l’appel de
Rails::Initializer.run

Par contre, là où ça devient vicieux, c’est que j’ai suivi le code
d’exemple commenter dans environment.rb. En effet, par défaut, lors de
la création d’un projet (rails myapp), l’exemple d’inflection se trouve
à l’intérieur de Rails::Initializer.run…

JD