[Radiant] any way to dynamically populate <r:random>?

john muhl lists at johnmuhl.com
Tue Jun 10 18:43:34 CDT 2008


I have to admit that rspec is still a bit intimidating, so I'm not  
sure this is exactly the sort of spec you were looking for. Feel free  
to point out everything that's wrong here and I'll try again.

===
--- standard_tags_spec.rb
+++ standard_tags_spec.rb
@@ -383,6 +383,13 @@
    it '<r:random> should render a randomly selected contained  
<r:option>' do
      page.should render("<r:random> <r:option>1</r:option>  
<r:option>2</r:option> <r:option>3</r:option> </r:random>").matching(/ 
^(1|2|3)$/)
    end
+
+  describe "<r:option>" do
+    it "should render each option before returning" do
+      page(:parent)
+      page.should  
render('<r:random><r:children:each><r:option><r:title /></r:option></ 
r:children:each></r:random>').matching(/^(Child|Child\ 2|Child\ 3)$/)
+    end
+  end

    it '<r:comment> should render nothing it contains' do
      page.should render('just a <r:comment>small </ 
r:comment>test').as('just a test')

===

The failure is:

     expected "<r:random><r:children:each><r:option><r:title /></ 
r:option></r:children:each></r:random>"
     to render and match /^(Child|Child\ 2|Child\ 3)$/, but got "Parent"

On 2008/06/07, at 20:35, Sean Cribbs wrote:

> Actually, I just answered my own question.  We should really be  
> rendering the contents of <r:option> at each pass, rather than  
> passing the block back.  The reason is that local context  
> (tag.locals) will be potentially lost when you render the block  
> after selecting the option.  However, a spec that demonstrates the  
> difference would be appreciated!
>
> Sean
>
> Sean Cribbs wrote:
>> This one has always been a mystery to me, however I believe it has  
>> to do with tag blocks versus expands.  I imagine, however, we could  
>> produce a failing spec to demonstrate what is unexpected about the  
>> behavior.  Any takers?
>>
>> Sean
>>
>> john muhl wrote:
>>> On 2008/06/07, at 16:49, Andrew Neil wrote:
>>>
>>>> On 6 Jun 2008, at 01:01, john muhl wrote:
>>>>
>>>>> I'd like to insert part of a random subpage into the sidebar and  
>>>>> figured it'd be a good fit for the <r:random> tag but so far am  
>>>>> having very little luck. I've tried:
>>>>>
>>>>> <r:random>
>>>>> <r:children:each>
>>>>> <r:option><r:title/></r:option>
>>>>> </r:children:each>
>>>>> </r:random>
>>>>
>>>> I thought of an alternative approach which might be easier to  
>>>> implement. Here is an example:
>>>>
>>>> <r:find url="/quotations">
>>>> <r:children:each limit="1" order="rand">
>>>>     <r:content part="body"/>
>>>> </r:children:each>
>>>> </r:find>
>>>>
>>>> This doesn't work at the moment, because the order attribute can  
>>>> only be asc or desc. I think it would be pretty easy to add the  
>>>> option for random order though.
>>>
>>> I was going to try putting together a patch to add "rand" as an  
>>> order option, but as far as I can tell the "ASC" and "DESC"  
>>> ordering is part of ActiveRecord and that seems like the wrong  
>>> place to apply a patch for Radiant. Am I way off base here or are  
>>> the ordering options, in fact, part of ActiveRecord?
>>> _______________________________________________
>>> Radiant mailing list
>>> Post:   Radiant at radiantcms.org
>>> Search: http://radiantcms.org/mailing-list/search/
>>> Site:   http://lists.radiantcms.org/mailman/listinfo/radiant
>>>
>>
>>
>
> _______________________________________________
> Radiant mailing list
> Post:   Radiant at radiantcms.org
> Search: http://radiantcms.org/mailing-list/search/
> Site:   http://lists.radiantcms.org/mailman/listinfo/radiant



More information about the Radiant mailing list