When you do "s = SolrClass.new" you are creating a new controller
instance that has nothing to do with the current request. So seems that the
"session" in "session[:flare_context]" is nil. This is totally normal.
The "class SolrClass < SiteController" doesn't do what you expect.
Search this list for "session activation" or something similar, i remember
that in the past someone asked this and finally was able to activate them.
His solution could be the door to what you are looking for.
/AITOR
On Nov 16, 2007 12:27 PM, Marc des Garets <[EMAIL PROTECTED]> wrote:
> Thank you for your answer. Here is what I've done. I installed the
> plugin radiant-rails-support that you can find here:
> http://code.google.com/p/radiant-rails-support/
>
> Now I've access to rails method doing this in my app/models/solr_tags.rb
> (class SolrClass < SiteController):
>
> module SolrTags
> include Radiant::Taggable
>
> class SolrClass < SiteController
> def getflare
> session[:flare_context] ||= Flare::Context.new(SOLR_CONFIG)
> @flare = session[:flare_context]
> end
> end
>
> tag 'solr' do |tag|
> tag.expand
> end
>
> tag 'solr:facet_list' do |tag|
> s = SolrClass.new
> s.getflare
> end
> end
>
> The problem is that the behaving of this doesn't seem the same than if I
> do this in app/view/index.rhtml for example and I was wondering if
> someone could explain me why because I am lost.
>
> I get this error when I'm calling the tag solr_facet_list
> (<r:solr:facet_list></r:solr:facet_list>):
> You have a nil object when you didn't expect it! You might have expected
> an instance of Array. The error occurred while evaluating nil.[]
>
>
> Marc
>
>
> Aitor Garay-Romero wrote:
> > I had to do this i would find a way to refer to the active
> controller,
> > in this case SiteController, and execute my "rails" methods on that
> object.
> > Or even do some ugly meta-programming stuff so in your tags "self"
> refers to
> > that controller object.
> >
> > There must be an instance or class variable that you can access that
> > gives you a reference to that SiteController instance. Do something
> like
> > "puts self.inspect" in your tag to see your "environment" and search for
> > something useful.
> >
> > /AITOR
> >
> > On Nov 15, 2007 3:39 PM, Marc des Garets <[EMAIL PROTECTED]> wrote:
> >
> >
> >> I just add something to my previous message:
> >>
> >> Today I have to do this to call the session method of rails (or any
> >> other rails method):
> >> ActionController::SessionManagement::ClassMethods.session
> >>
> >> I want to have to do:
> >> session
> >>
> >> without writing the ActionController::SessionManagement::ClassMethods
> or
> >> doing an include ActionController::SessionManagement::ClassMethods
> >>
> >>
> >> Marc
> >>
> >>
> >> Marc des Garets wrote:
> >>
> >>> I think a piece of code will explain better what I want to do:
> >>>
> >>> Here is my solr_tags.rb:
> >>>
> >>> module SolrTags
> >>> include Radiant::Taggable
> >>> include Flare::ActionControllerExtensions::InstanceMethods
> >>> include ActionController::SessionManagement::ClassMethods
> >>>
> >>> ...
> >>>
> >>> tag 'solr:facet_list' do |tag|
> >>> @flare = flare_before
> >>> @flare.facet_fields.each do |field|
> >>> %{#{facet_label(field)}}
> >>> end
> >>> end
> >>>
> >>> end
> >>>
> >>> The flare_before function in lib/flare/controller_extensions.rb
> >>>
> >>> def flare_before
> >>> # TODO: allow source of context to be configurable.
> >>> session[:flare_context] ||= Flare::Context.new(SOLR_CONFIG)
> >>>
> >>> @flare = session[:flare_context]
> >>>
> >>> return @flare
> >>> end
> >>>
> >>> The method session is part of rails, I can call it thanks to include
> >>> ActionController::SessionManagement::ClassMethods.
> >>>
> >>> Now I have this error message:
> >>> undefined method `write_inheritable_array'
> >>>
> >>> This method is called by the method session of rails.
> >>>
> >>> What I want to do is that I don't have to add include
> >>> ActionController::SessionManagement::ClassMethods and that when I use
> a
> >>> rails method, this method knows about others rails method.
> >>>
> >>> In short, I want to have access to every rails method.
> >>>
> >>>
> >>> Marc
> >>>
> >>>
> >>> Sean Cribbs wrote:
> >>>
> >>>
> >>>> Marc,
> >>>>
> >>>> By default, Radius tags are rendered within a Page that is called
> from
> >>>> the SiteController, which has the session turned off. You might be
> >>>> better off using cookies, but you would only be able to read them
> >>>>
> >> unless
> >>
> >>>> you can come up with some scheme that decides what cookies to send
> >>>>
> >> based
> >>
> >>>> on the page. Including that module doesn't accomplish what you want.
> >>>> Could you give us a little more detail about what you want to do?
> >>>>
> >>>> Sean
> >>>>
> >>>> Marc des Garets wrote:
> >>>>
> >>>>
> >>>>
> >>>>> Hi all,
> >>>>>
> >>>>> I'm pretty new in radiant and in ruby on rails but I'm making an
> >>>>> extension for radiant and I have some questions I'm pretty sure
> you'll
> >>>>> be able to answer:
> >>>>>
> >>>>> I'm creating my tags for my extension in app/models/solr_tags.rb
> >>>>>
> >>>>> I'm using the method session of the
> >>>>> ActionController::SessionManagement::ClassMethods class of rails but
> >>>>>
> >> to
> >>
> >>>>> use this session method I had to add this in my solr_tags.rb file:
> >>>>>
> >>>>> include ActionController::SessionManagement::ClassMethods
> >>>>>
> >>>>> After that I can call the method session in my
> >>>>> lib/flare/controller_extensions.rb that is in a function I'm calling
> >>>>> from my solr_tags.rb file.
> >>>>>
> >>>>> But now, I have this error: undefined method
> `write_inheritable_array'
> >>>>> that I could solve doing an other include of a rails class but I was
> >>>>> wondering if there is an other way to get all these rails method
> >>>>>
> >> without
> >>
> >>>>> adding an include each time I need one rails method. Furthermore,
> it's
> >>>>> the method session that is using write_inheritable_array so it
> should
> >>>>>
> >> be
> >>
> >>>>> fine. I think I have some misconfiguration somewhere. Can you help?
> >>>>>
> >>>>> Hope I was clear enough, tell me if not and thank you in advance for
> >>>>> your help.
> >>>>>
> >>>>>
> >>>>> Marc
> >>>>>
> >>>>> _______________________________________________
> >>>>> Radiant mailing list
> >>>>> Post: [email protected]
> >>>>> Search: http://radiantcms.org/mailing-list/search/
> >>>>> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>> _______________________________________________
> >>>> Radiant mailing list
> >>>> Post: [email protected]
> >>>> Search: http://radiantcms.org/mailing-list/search/
> >>>> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
> >>>>
> >>>>
> >>>>
> >>> _______________________________________________
> >>> Radiant mailing list
> >>> Post: [email protected]
> >>> Search: http://radiantcms.org/mailing-list/search/
> >>> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
> >>>
> >>>
> >> _______________________________________________
> >> Radiant mailing list
> >> Post: [email protected]
> >> Search: http://radiantcms.org/mailing-list/search/
> >> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
> >>
> >>
> > _______________________________________________
> > Radiant mailing list
> > Post: [email protected]
> > Search: http://radiantcms.org/mailing-list/search/
> > Site: http://lists.radiantcms.org/mailman/listinfo/radiant
> >
>
> _______________________________________________
> Radiant mailing list
> Post: [email protected]
> Search: http://radiantcms.org/mailing-list/search/
> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
>
_______________________________________________
Radiant mailing list
Post: [email protected]
Search: http://radiantcms.org/mailing-list/search/
Site: http://lists.radiantcms.org/mailman/listinfo/radiant