Hi All, I have a model instance M1 , which has a dynamically changing instance variable say V. I want to access the value of V in my view through controller C using AJAX requests. The problem is that for every new AJAX request a new controller instance gets created. This new controller instance does not have any reference to my already existing Model object M1 and therefore to the variable V. I have tried using session[:M1] but I get server error when I run the page. Can I not keep the model object instances in session ?? Can anyone point out if I am doing anything wrong, or maybe suggest an alternative solution. TIA Shishir --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Shishir Srivastava wrote:> Hi All, > > I have a model instance M1 , which has a dynamically changing instance > variable say V. I want to access the value of V in my view through > controller C using AJAX requests. > > The problem is that for every new AJAX request a new controller > instance gets created. This new controller instance does not have any > reference to my already existing Model object M1 and therefore to the > variable V. > > I have tried using session[:M1] but I get server error when I run the > page. > > Can I not keep the model object instances in session ?? Can anyone > point out if I am doing anything wrong, or maybe suggest an > alternative solution. > > TIA > ShishirYou should post some code on your controller and how you are persisting the info in the session. You CAN store Models in the session, although it''s a bad practice from the point of view of ''staleness'' of data in the session model compared to what''s potentially in the db. Better to store ID''s and ''find'' the info as you need it. I await your code to help debug your problem. thanks. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hi Jean, You are right, the problem however is that my model object M1 is not serializable and hence cannot be dumped by the session. In fact I don''t want to store it even in a db since it''s a non -AR model. Here''s my model code: class Login def connect id, password @jid = id @password = password @cl = Jabber::Client::new(@jid) @cl.connect(host=''im.oracle.com'', port=5223) @cl.auth_nonsasl(@password, false) @cl.add_message_callback do |m| if m.type != :error assign_message(m.body,m.from) if m.body == ''exit'' @cl.close end end end end def assign_message msg_b, msg_f @mesage =Jabber::Message::new(msg_f, msg_b).set_type(:normal).set_id(''1'') end def throw return @mesage.body end end Now this is basically a connection object which maintains my stream connection to a server. Here''s the controller part. class LoginController < ApplicationController model :Login def index end def sign_in @jid = Jabber::JID::new(@params[''user_name'']+''/ruby'') @jid.domain=''oracle.com'' @password = params[''pwd''] #testing Login model creation @log_in = Login.new @log_in.connect(@jid,@password) session[:sess]= @log_in session[:sess].connect puts(''signed in to oracle'') end def throw_msg render_text "message received : #{session[:sess].throw}" end end This controller gets created everytime I send an AJAX request calling the throw_msg method in the controller to receive the new messages coming in the model. But since the model object cannot be persisted it doesn''t know of the messages received. Can you please suggest any alternative method. ~shishir On Sep 20, 7:05 pm, Jean Nibee <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Shishir Srivastava wrote: > > Hi All, > > > I have a model instance M1 , which has a dynamically changing instance > > variable say V. I want to access the value of V in my view through > > controller C using AJAX requests. > > > The problem is that for every new AJAX request a new controller > > instance gets created. This new controller instance does not have any > > reference to my already existing Model object M1 and therefore to the > > variable V. > > > I have tried using session[:M1] but I get server error when I run the > > page. > > > Can I not keep the model object instances in session ?? Can anyone > > point out if I am doing anything wrong, or maybe suggest an > > alternative solution. > > > TIA > > Shishir > > You should post some code on your controller and how you are persisting > the info in the session. > > You CAN store Models in the session, although it''s a bad practice from > the point of view of ''staleness'' of data in the session model compared > to what''s potentially in the db. > > Better to store ID''s and ''find'' the info as you need it. > > I await your code to help debug your problem. > > thanks. > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> > This controller gets created everytime I send an AJAX request calling > the throw_msg method in the controller to receive the new messages > coming in the model. But since the model object cannot be persisted it > doesn''t know of the messages received. > > Can you please suggest any alternative method. > > ~shishir > > On Sep 20, 7:05 pm, Jean Nibee <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>If you have no way to serialize, or even better persist, the info into a db, then I think you are stuck maybe having to look at a daemon process that handles the messaging and you can query THAT in with your call to the "throw_msg" method. Or else, and I''m really just brainstorming here, what about a class variable that is shared across all instances of your controller and have that route your messages? Just a though. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> If you have no way to serialize, or even better persist, the info into a > db, then I think you are stuck maybe having to look at a daemon process > that handles the messaging and you can query THAT in with your call to > the "throw_msg" method.I am not really into threads and daemon processes. :(. What I am wondering here is that unlike java where I can maintain session for such objects why can i not do that on rails. Or else, and I''m really just brainstorming here,> what about a class variable that is shared across all instances of your > controller and have that route your messages?Not possible, there are two problems with that approach. First the shared class variable will not be able to maintain more than 1 user session. ( Basically when say N users connect I need N instances of my model object.) Second the class variable will also get initialized every time the controller class get instantiated because I create the model object within the controller class. Stuck badly. :( ~Shishir> > Just a though. > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Shishir Srivastava wrote:> First the shared class variable will not be able to maintain more than > 1 user session. ( Basically when say N users connect I need N > instances of my model object.) > Second the class variable will also get initialized every time the > controller class get instantiated because I create the model object > within the controller class.So create a hash of your models, username => model. Store the hash as a class variable and put the username in the session. Just remember that you''ll need to clean up the hash when the session dies. Also keep in mind that this does not scale beyond one Ruby process. If you want to scale, you''ll need to rethink your approach. mike -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Shishir Srivastava wrote:> Now this is basically a connection object which maintains my stream > connection to a server.Usually, when displaying results from a remote database on a webpage, you want to open and close the connection with each user request. You don''t store the connection in the session, you store the means to get the connection (eg. the user''s id and password). -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---