Forum: Rails France ruby Ajax et javascript

434ba715011106ccd111e30c911584a6?d=identicon&s=25 Anass Leo (leonidas)
on 2010-03-22 01:11
Salut !

j'utilise ruby avec ajax pour cacher ou bien faire apparaitre un DIV
suivant le rôle d'un utilisateur

edit.html.erb :

<p>
    <%= f.label :role %><br />
    <%= f.select(:role, %w{ Etudiant Parent Admin }, :selected =>
@user.role) %>
    <%= observe_field :user_role, :frequency => 0.01, :on => "change",
:url => {:action => "selectList" }, :with => "user_role"%>
  </p>
<div id="current_item" style="width :70px">
     <%= f.label :parent_id %><br />
    <%= f.collection_select(:parent_id, @listUser, :id, :nom, {:selected
=> @user.parent_id}) %>
   </div>

user_controller :

 def selectList
    if params[:user_role] == "Etudiant"
      respond_to do |format|
        format.js
      end
  else
    #render :js => "alert('Hello Rails');"
    render :update do |page|
         page[:current_item].visual_effect :Fade, :duration => 0.2
        end
    end
  end


ce code marcher très bien , j'ai le div affiché ou caché selon le rôle
de l'utilisateur , mon problème c'est que au chargement (évènement
onload) de la page edit.html.erb je veux manipuler le div selon le rôle
charger de mon User
pour cela j'ai essayé ceci :

<script type="text/javascript">
    document.observe('dom:loaded', function() {
if(document.getElementById('user_role') != "toto"){
document.getElementById("current_item").style.visibility='hidden';
}else{
document.getElementById("current_item").style.visibility='visible';
}
});
</script>

le div en question ne réagit pas au chargement de la page , c'est quoi
le problem ? est ce qu'il y a une autre solution plus clean et plus
facile ?

merci pour l'aide
9a00ce848763a4472291fcbcefd31a07?d=identicon&s=25 Jean-Baptiste Barth (Guest)
on 2010-03-22 10:40
(Received via mailing list)
Bonjour,

Le 22 mars 2010 01:11, Anass Leo <list-incoming@andreas-s.net> a écrit :

> le div en question ne réagit pas au chargement de la page , c'est quoi
> le problem ? est ce qu'il y a une autre solution plus clean et plus
> facile ?
>

Il serait peut-être plus facile de jouer avec ton template et de ne pas
te
servir de javascript pour cette opération. Tu pourrais rajouter un style
"display:none;" dans la balise du div en question selon que ton @user a
tel
ou tel role.

<div id="current_item" style="width :70px<%= "; display:none" if
@user.role
== "Etudiant" %>">

Ou un truc de ce genre..

Jean-Baptiste

--
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
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse
railsfrance-unsubscribe@googlegroups.com

To unsubscribe from this group, send email to
railsfrance+unsubscribegooglegroups.com or reply to this email with the
words "REMOVE ME" as the subject.
434ba715011106ccd111e30c911584a6?d=identicon&s=25 Anass Leo (leonidas)
on 2010-03-22 12:28
mais ce que je veux s'est d'avoir la possibilité de changer le rôle à
partir d'un "select" et par conséquence je veux que le div disparait ou
apparait à la volet c'est pour ça que j'utilise " observe_field" , ça
marche bien mais mon problème c'est au chargement de la page "Edit" , le
role est pre-selctionné  bien sure à partir de @user.role mais le div
est visible par défaut mémé si le role est "Etudiant" .

j'espère que je suis assez claire

Merci
This topic is locked and can not be replied to.