Unfortunately there is no Admin Login screen, only this =>
Application error (Apache)
Change this error message for exceptions thrown outside of an action
(like
in Dispatcher setups or broken Ruby code) in public/500.html
So it seems that Radiant is being served correctly into the $VH_ROOT of
the
webserver (/srv/www/radiant/) but it is not seeing the appropriate view.
Unfortunately there is no Admin Login screen, only this =>
Application error (Apache)
Whenever you see an Application Error on a Rails app it’s an indication
that you should check the logs to see if you can find the actual error
that is being thrown. That will generally tell you a lot about what the
problem is.
Anyway I’m trying to add some globally available tags to it:
There is a Model declared thus:
class Gallery < ActiveRecord::Base
has_many :items,
:class_name => ‘GalleryItem’
end
And I have made a module in the extension /lib called gallery_tags.rb
which contains this (fake example)…
module GalleryTags #tags available globally, not just on GalleryPages
include Radiant::Taggable
tag “mytag” do |tag|
if tag.attr[“id”]
tag.locals.gallery = Gallery.find_by_id tag.attr[“id”]
tag.expand
end
tag “anothertag” do |tag|
tag.locals.gallery.name
end
end
added to the extension with:
def activate
admin.tabs.add “Galleries”, “/admin/gallery”, :after =>
“Layouts”, :visibility => [:all]
Page.send :include, GalleryTags
end
yet when I do this in a page:
<r:mytag id=‘1’>
<r:anothertag>
</r:mytag>
I get this:
You have a nil object when you didn’t expect it! The error occurred
while evaluating nil.name
It seems that tag.locals.gallery is being set to nil in between the
tag calls… I can’t work out why because other extensions seem to do
similar things… it’s very confusing.
You need to call the id in both tags. I know it is a little
counterintuitive, but the id tag is not being passed to the first
tag, just the second. I banged my head on this for a few days, try it
like this:
tag “mytag” do |tag|
if tag.attr[“id”]
tag.locals.gallery = Gallery.find_by_id tag.attr[“id”]
tag.expand
end
tag “anothertag” do |tag|
gallery = Gallery.find_by_id tag.attr[“id”] || tag.locals.gallery
gallery.name
end
This should work, but I haven’t tested it, so I make no promises.
You may want to add a some sort of error handling in there in case
no id is found.
Basically tag.locals is a “virtual” (don’t know correct name) method…
so if you want tag.locals.item.name you should first assign
tag.locals.item to a variable and then query that variable:
i.e.
item = tag.locals.item
return item.name
you can assign with tag.locals.item =, but not tag.locals.item.name =
for example.