Generating html

How do you generate html outside of a view? I'm trying to use link_to
to generate html for a link.
I've included ActionView, ActionView::Helpers,
ActionView::Helpers::UrlHelper,
and ERB::Util, but the system says I'm calling url_for from a nil
object.
I checked my user code and added code to make sure each object exists
(is not null) before trying to use it. I can't figure out what I
might have missed,
and the error seems to be occurring deep inside the libraries.
So maybe something else isn't getting included?
Here's the stack trace in case that helps:

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.url_for

RAILS_ROOT: /usr/home/dan/progg/rails/articles/config/..
Application Trace | Framework Trace | Full Trace

/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_view/
helpers/url_helper.rb:27:in `send'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_view/
helpers/url_helper.rb:27:in `url_for'
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.6/lib/action_view/
helpers/url_helper.rb:75:in `link_to'
/usr/home/dan/progg/rails/articles/app/helpers/category_helper.rb:
25:in `node_html'
/usr/home/dan/progg/rails/articles/app/helpers/category_helper.rb:
15:in `children_html'
/usr/home/dan/progg/rails/articles/app/helpers/category_helper.rb:
14:in `each'
/usr/home/dan/progg/rails/articles/app/helpers/category_helper.rb:
14:in `children_html'
/usr/home/dan/progg/rails/articles/app/helpers/category_helper.rb:
40:in `tree_html'
/usr/home/dan/progg/rails/articles/app/controllers/
category_controller.rb:17:in `tree'
/usr/local/bin/mongrel_rails:19:in `load'
/usr/local/bin/mongrel_rails:19

danb wrote:

How do you generate html outside of a view?
I'm trying to use link_to to generate html for a link.

gemblon (t.b.) wrote:

i am not 100% sure what you are trying to do....

Thorsten Mueller wrote:

i don't get the details, why use this outside a view? and if necessary,
where exactly did you place the rb file containing your code?

in helpers/category:

module CategoryHelper
  class CategoryHtml < Category

otherwise the stack trace looks not that strange. if all objects exist
and are not nil, my guess would be, that your routing has a bug.
does link_to with the same attributes work in a view?

Yes, I copied the code straight out of a view that was working for
a flat list.

The db contains a virtual tree structure, sort of like a file system.
Each row (node) a has a parent_id column that points to the row that
the
current row is a branch of. The parent_id of the root node/row is nil/
null.

Now I want to view the tree by recursively calling a method that
returns a piece of html for the row (branch in the tree) passed to it
as an argument. All the little pieces of html get concatenated and
pasted into a view as a single string of pure html.

But views don't take arguments, do they? A view would work if
it could take an argument, but it doesn't look like they can.

> But views don't take arguments, do they? A view would work if
> it could take an argument, but it doesn't look like they can.

in erb tags? whatever you define in a controller with an @
can be used in the view

Right, but what I'm talking about here is a partial that has multiple
copies rendered together on a page, and while the html is being
generated, there's a stack of calls to the partial that have been
entered, but not yet exited. The stack contains the rows in the db
corresponding to a chain of nodes in the tree,

So there would be multiple values of @category or whatever that
have to be remembered while rendering the page, and the number
and structure of the rows is determined at runtime. It's a lot
harder
without a method or something that can take its own local argument.

That's it! Thorsten, you're a genius! My gosh, I was starting to
lose hope. Anyway, the code's working now, so my faith in Rails
is restored. Thanks Thorsten, I appreciate the help.