Forum: Rails France Passage d'une vue en partiel => n'appelle plus le controlleu

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
14d21e3ef9d297a765aeb99e32254485?d=identicon&s=25 Cédric B (Guest)
on 2007-07-01 19:17
Bonjour à tous, je débute avec RoR (  ) et je rencontre un problème
aprés avoir converti une vue en partiel.

Voici mon architecture de départ :

    * J'ai un layout "index.rhtml".
    * Un controlleur "user" qui possede une méthode "list" qui génére
une variable @mesUsers
    * Une vue dans views/user/list.rhtml


Ma vue list.rhtml execute correctement la méthode "list" du controller
user et consulte bien la variable @mesUsers

Cependant j'ai voulu transformer ma vue list.rhtml en partiel, je l'ai
donc renommée "_list.rhtml" et j'ai fais un "render :partial =>
'user/list'" dans mon layout.
Le partiel est bel et bien appelé mais la variable @mesUsers qu'il
essaye de consulter semble "nil"

Apparament une fois la vue list passée en partiel elle n'appelle plus la
méthode 'list' du contolleur 'user' et je ne comprends pas comment lui
dire de le faire et de me renvoyer la variable @mesUsers.

Une idée ?
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (Guest)
on 2007-07-01 19:38
(Received via mailing list)
On 7/1/07, Cédric B <list-incoming@andreas-s.net> wrote:
>
> Apparament une fois la vue list passée en partiel elle n'appelle plus la
> méthode 'list' du contolleur 'user' et je ne comprends pas comment lui
> dire de le faire et de me renvoyer la variable @mesUsers.
>
> Une idée ?
>

Pourrais-tu nous montrer des exemples de codes, car j'avoue ne pas
avoir bien compris ton problème.


--
Cyril Mougel
14d21e3ef9d297a765aeb99e32254485?d=identicon&s=25 Cédric B (Guest)
on 2007-07-01 20:01
Tout simplement :
=================
Dans mon controlleur j'ai une méthode "list" qui crée une collection
d'utilisateur dans une instance @users :
def list
    @users = User.find(:all)
end


-> Quand j'utilise la vue "list.rhtml" elle invoque correctement la
méthode "list" et par conséquent je peux exploiter l'instance @users
avec un for.
<% for user in @users %>
    <%= user.nom %>
<% end %>


Cependant je voudrais utiliser cette vue en tant que partiel et quand
j'utilise le partiel "_list.rhtml" : elle n'invoque pas la méthode
"list" et par conséquent je ne peux pas exploiter l'instance @users qui
est nil.
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (Guest)
on 2007-07-01 20:28
(Received via mailing list)
On 7/1/07, Cédric B <list-incoming@andreas-s.net> wrote:
> -> Quand j'utilise la vue "list.rhtml" elle invoque correctement la
> est nil.
>

Je ne comprend pas ce que tu veux dire par un partiel qui invoque une
méthode. En effet c'est un méthode qui invoke des vues pas l'inverse.
De plus un partiel est surtout à utiliser dans une vue, pas
directement dans ton controller. Quel est ton UserCase pour devoir
voir appelé ton partiel dans ton controller

--
Cyril Mougel
39c15208401288a850fcae7fa884e45c?d=identicon&s=25 Benoit Caccinolo (Guest)
on 2007-07-02 10:51
(Received via mailing list)
Salut Cédric,

Si ton action "list" et l'action appelant le partial "_list" (que
j'appellerais "p_list") sont dans le meme controlleur, il suffit que
tu appelles "list" dans l'action "p_list". Si elles ne sont pas dans
le meme controlleur, il faut rajouter ton  code :
  @users = User.find(:all)
dans l'action "p_list".

Benoit

On 7/1/07, Cédric B <list-incoming@andreas-s.net> wrote:
> -> Quand j'utilise la vue "list.rhtml" elle invoque correctement la
> est nil.
>
> --
> Posted via http://www.ruby-forum.com/.
>
> >
>


--
Benoit
A99870c1391c39da2089649745965bda?d=identicon&s=25 Jean-François Trân (Guest)
on 2007-07-02 11:21
(Received via mailing list)
Cédric :
> <% end %>
>
>
> Cependant je voudrais utiliser cette vue en tant que partiel et quand
> j'utilise le partiel "_list.rhtml" : elle n'invoque pas la méthode
> "list" et par conséquent je ne peux pas exploiter l'instance @users qui
> est nil.

Si tu utilises @users dans ton layout et que @users est toujours
défini de la même manière (@users = User.find :all par exemple),
tu peux définir un préfiltre (before_filter) qui se chargera de créer
@users correctement, pour toutes les actions qui utilisent ce layout
dans leurs vues.

Si c'est général à ton application, tu peux faire :

class ApplicationController < ActionController::Base
  before_filter :get_users

  protected
    def get_users
      @users = User.find :all
    end
end

   -- Jean-François.

--
Ruby ( http://www.rubyfrance.org ) on Rails ( http://www.railsfrance.org
)
This topic is locked and can not be replied to.