Got it nad it makes sense. Thank you! Quoting Sean Cribbs <[EMAIL PROTECTED]>:
> Todd: I'd make a few tweaks so you don't have problems: > > (Answerbookpage.content_columns.dup).each do |column| > tag "faq:#{column.name}" do |tag| > tag.locals.answer.send(column.name).to_s if tag.locals.answer > end > end > > [snip] > > tag "faq:each" do |tag| > result = "" > Answerbookpage.find(:all).each do |item| > tag.locals.answer = item > result << tag.expand > end > result > end > > Let me explain why I suggest these. > 1) Unless you want to display things like foreign keys, you probably > don't want ALL of the columns from your Answerbookpage model -- just the > ones that have actual useful content. > 2) Scoping the tag under "faq" will prevent tags like <r:answername /> > from working under any invalid context. > 3) In both "faq:each" and the dynamically created tags, it's best to > define your own local rather than overwriting page. tags.locals.page > should always refer to the currently rendering page (including > contextual ones). I'm assuming you just grabbed some code from > "children:each". Besides "tag.locals.answer" says better what you're > passing around. > 4) I added ".to_s if tag.locals.answer" at the end of your line for a > little safety. First, sometimes objects that you could get from a model > could return some ugly inspect string instead of a real representation, > and also, if somehow your tag gets out of context or gets 'nil' in > tag.locals.answer, you won't output anything ugly. > 5) Everything you are outputting is a string , so 'result' in "faq:each" > should be a string. > > Hope this helps! > > Cheers, > Sean Cribbs > > Todd McGrath wrote: > > Well, that is exactly what I needed. Thanks again, Jamie! > > > > I can't say if the following code is the best, most efficient way, but here > it > > is for posterity sake- > > > > module FaqTag > > include Radiant::Taggable > > > > class TagError < StandardError; end > > > > # <r:answername /> > > # <r:summary /> > > # etc... > > # > > (Answerbookpage.column_names.dup).each do |method| > > tag(method.to_s) do |tag| > > tag.locals.page.send(method) > > end > > end > > > > > > tag "faq" do |tag| > > tag.expand > > end > > > > tag "faq:each" do |tag| > > result = [] > > Answerbookpage.find(:all).each do |item| > > tag.locals.child = item > > tag.locals.page = item > > result << tag.expand > > end > > result > > end > > > > end > > > > > > > > Quoting Jamie Wilkinson <[EMAIL PROTECTED]>: > > > > > >> Howdy Todd, > >> > >> A combination of cloning the <r:children:each> tag (slightly lower in > >> the same file) and the metamethod you pointed out should work just > >> fine. So it would look more like: > >> > >> <r:faq:each> > >> <r:answername /> > >> <r:summary /> > >> </r:faq:each> > >> > >> -jamie > >> > >> On Jan 10, 2007, at 7:46 AM, Todd McGrath wrote: > >> > >> > >>> Hello again, > >>> > >>> I'm making some progress on extensions and now I'm looking for a > >>> little push in > >>> the right direction. > >>> > >>> I'm working on an extension for displaying data from database for > >>> the FAQ > >>> section of a site using tags (mental branch). > >>> > >>> * Created a FaqExtension and include the tag: > >>> > >>> def activate > >>> Page.send :include, FaqTag > >>> end > >>> > >>> * in lib/faq_tag.rb: > >>> module FaqTag > >>> include Radiant::Taggable > >>> > >>> class TagError < StandardError; end > >>> > >>> tag "faq" do |tag| > >>> faq = Answerbookpages.find(:all) > >>> raise TagError.new("Faq cannot be found") unless faq > >>> tag.locals.faq = faq > >>> tag.expand > >>> end > >>> > >>> tag "faqhello" do |tag| > >>> "Hello #{tag.attr['name'] || 'mundo'}!" > >>> end > >>> > >>> end > >>> > >>> * "faqhello" (<r:faqhello/>) works and "faq" tag is retrieving from > >>> db. > >>> (Obviously, I have an Answerbookpages class > >>> > >>> I'm looking for some insight to take it further. > >>> > >>> In my FAQ page, I'd like to use something like the following: > >>> > >>> <r:faq> > >>> <r:answername /> > >>> <r:summary /> > >>> </r:faq> > >>> > >>> where "answername" and "summary" are fields in the answerbookpages > >>> table. > >>> > >>> Not sure where to begin.. > >>> > >>> In the StandardTags class, I see: > >>> # > >>> # <r:url /> > >>> # <r:title /> > >>> # etc... > >>> # > >>> ((Page.column_names.dup << 'url') - ['class_name', 'created_by', > >>> 'updated_by']).each do |method| > >>> tag(method.to_s) do |tag| > >>> tag.locals.page.send(method) > >>> end > >>> > >>> Maybe the answer I'm looking for is something similar to this? > >>> > >>> Any thoughts or suggestions are really appreciated > >>> > >>> Thank you, > >>> Todd > >>> > >>> _______________________________________________ > >>> Radiant mailing list > >>> Post: Radiant@lists.radiantcms.org > >>> Search: http://radiantcms.org/mailing-list/search/ > >>> Site: http://lists.radiantcms.org/mailman/listinfo/radiant > >>> > >> _______________________________________________ > >> Radiant mailing list > >> Post: Radiant@lists.radiantcms.org > >> Search: http://radiantcms.org/mailing-list/search/ > >> Site: http://lists.radiantcms.org/mailman/listinfo/radiant > >> > >> > > > > > > _______________________________________________ > > Radiant mailing list > > Post: Radiant@lists.radiantcms.org > > Search: http://radiantcms.org/mailing-list/search/ > > Site: http://lists.radiantcms.org/mailman/listinfo/radiant > > > > > > _______________________________________________ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant