How can I render a partial using a traditional (outside of MVC) erb file in Rails 3?

I wrote following module in Rails 3 to generate .json files using erb
templates:

module TemplateGenerator
    require "erb"

    def generate_menu(website_id)
      menu_template = open_and_read_template("lib/menu.json.erb")
      @website.find(website_id)
      @home_page = @website.pages.first
      create_file(menu_template,"public/menu.json")
  end

    private

      def open_and_read_template(file_path)
        file = File.open(file_path, "rb")
          file.read
    end

    def create_file(template,file_name)
      erb = ERB.new( template )
          File.open(file_name, 'w') do |f|
            f.write erb.result(binding)
          end
    end

end

The erb file is:

{
    "text": "Menu",
    "items": [
        {
            "text": "<%= @home_page.title %>",
        },
        <%= render :partial => 'item', :collection =>

@home_page.children.sort_by{|c| c.sibling_order} %>
]
}

and I’m trying to display this recursive partial:

{
    "text": <%= item.title %>,
    <% if item.children? %>
    "items": [
        <%= render :partial => 'item', :collection =>

item.children.sort_by{|c| c.sibling_order} %>
]
<% end %>
},

My question is how can I get the render method to work in this instance
when
I call generate_menu during an action in my application? Is there a
better,
more ‘rails’ way to create files using an erb template?

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs