views:

513

answers:

1

I have a controller called 'exposures' which I created automatically with the script/generate scaffold call. The scaffold pages work fine. I created a custom action called 'test' in the exposures controller. When I try to call the page (http://127.0.0.1:3000/exposures/test/1) I get a blank, white screen with no text at all in the source.

I am using Rails 2.3.8 and mongrel in the development environment. There are no entries in development.log and the console that was used to open mongrel has the following error:

You might have expected an instance of Array. The error occurred while evaluating nil.split> D:/Rails/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/cgi_process.rb:52:in dispatch_cgi' D:/Rails/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:101:indispatch_cgi' D:/Rails/ruby/lib/ruby/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:27:in dispatch' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel/rails.rb:76:inprocess' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel/rails.rb:74:in synchronize' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel/rails.rb:74:inprocess' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel.rb:159:in process_client' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel.rb:158:ineach' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel.rb:158:in process_client' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel.rb:285:inrun' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel.rb:285:in initialize' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel.rb:285:innew' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel.rb:285:in run' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel.rb:268:ininitialize' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel.rb:268:in new' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel.rb:268:inrun' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel/configurator.rb:282:in run' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel/configurator.rb:281:ineach' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel/configurator.rb:281:in run' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/mongrel_rails:128:in run' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel/command.rb:212:in run' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/mongrel_rails:281 D:/Rails/ruby/bin/mongrel_rails:19:inload' D:/Rails/ruby/bin/mongrel_rails:19

Here is the exposures_controller code:

class ExposuresController < ApplicationController
  # GET /exposures
  # GET /exposures.xml
  def index
    @exposures = Exposure.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @exposures }
    end
  end

  #/exposure/graph/1
  def graph
   @exposure = Exposure.find(params[:id])
   project_name = @exposure.tender.project.name
   group_name = @exposure.tender.user.group.name
   tender_desc = @exposure.tender.description
   direction = "Cash Out"
   direction = "Cash In" if @exposure.supply
   currency_1_and_2 = "#{@exposure.currency_in} => #{@exposure.currency_out}"
   title = "#{project_name}:#{group_name}:#{tender_desc}/n"
   title += "#{direction}:#{currency_1_and_2}"
   factors = Array.new
   carrieds = Array.new
   days = Array.new
   @exposure.rates.each do |r|
    factors << r.factor
    carrieds << r.carried
    days << r.day.to_s    
   end
   max = (factors+carrieds).max
   min = (factors+carrieds).min

   g = Graph.new
   g.title(title, '{font-size: 12px;}')
   g.set_data(factors)
   g.line_hollow(2, 4, '0x80a033', 'Bounces', 10)
   g.set_x_labels(days)
   g.set_x_label_style( 10, '#CC3399', 2 );
   g.set_y_min(min*0.9)
   g.set_y_max(max*1.1) 
   g.set_y_label_steps(5)
   render :text => g.render
  end

  def test
   render :text => "this works"
  end



  # GET /exposures/1
  # GET /exposures/1.xml
  def show
    @exposure = Exposure.find(params[:id])
    @graph = open_flash_chart_object(700,250, "/exposures/graph/#{@exposure.id}")  
    #@graph = "/exposures/graph/#{@exposure.id}"


    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @exposure }
    end
  end

  # GET /exposures/new
  # GET /exposures/new.xml
  def new
    @exposure = Exposure.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @exposure }
    end
  end

  # GET /exposures/1/edit
  def edit
    @exposure = Exposure.find(params[:id])
  end

  # POST /exposures
  # POST /exposures.xml
  def create
    @exposure = Exposure.new(params[:exposure])

    respond_to do |format|
      if @exposure.save
        flash[:notice] = 'Exposure was successfully created.'
        format.html { redirect_to(@exposure) }
        format.xml  { render :xml => @exposure, :status => :created, :location => exposure }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @exposure.errors, :status => unprocessable_entity}
      end
    end
  end

  # PUT /exposures/1
  # PUT /exposures/1.xml
  def update
    @exposure = Exposure.find(params[:id])

    respond_to do |format|
      if @exposure.update_attributes(params[:exposure])
        flash[:notice] = 'Exposure was successfully updated.'
        format.html { redirect_to(@exposure) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @exposure.errors, :status => unprocessable_entity}
      end
    end
  end

  # DELETE /exposures/1
  # DELETE /exposures/1.xml
  def destroy
    @exposure = Exposure.find(params[:id])
    @exposure.destroy

    respond_to do |format|
      format.html { redirect_to(exposures_url) }
      format.xml  { head :ok }
    end
  end
end

Clever readers will notice the 'graph' action. This is what I really want to work, but if I can't even get the test action working, then I'm sure I have no chance.

Any ideas? I have restarted mongrel a few times with no change.

Here is the output of Rake routes (but I don't believe this is the problem. The error would be in the form of and HTML error response).

D:\Rails\rails_apps\fx>rake routes
(in D:/Rails/rails_apps/fx)
DEPRECATION WARNING: Rake tasks in vendor/plugins/open_flash_chart/tasks are deprecated. Use lib/tasks instead. (called from D:/
by/gems/1.8/gems/rails-2.3.8/lib/tasks/rails.rb:10)
        rates GET    /rates(.:format)                   {:controller=>"rates", :action=>"index"}
              POST   /rates(.:format)                   {:controller=>"rates", :action=>"create"}
     new_rate GET    /rates/new(.:format)               {:controller=>"rates", :action=>"new"}
    edit_rate GET    /rates/:id/edit(.:format)          {:controller=>"rates", :action=>"edit"}
         rate GET    /rates/:id(.:format)               {:controller=>"rates", :action=>"show"}
              PUT    /rates/:id(.:format)               {:controller=>"rates", :action=>"update"}
              DELETE /rates/:id(.:format)               {:controller=>"rates", :action=>"destroy"}
      tenders GET    /tenders(.:format)                 {:controller=>"tenders", :action=>"index"}
              POST   /tenders(.:format)                 {:controller=>"tenders", :action=>"create"}
   new_tender GET    /tenders/new(.:format)             {:controller=>"tenders", :action=>"new"}
  edit_tender GET    /tenders/:id/edit(.:format)        {:controller=>"tenders", :action=>"edit"}
       tender GET    /tenders/:id(.:format)             {:controller=>"tenders", :action=>"show"}
              PUT    /tenders/:id(.:format)             {:controller=>"tenders", :action=>"update"}
              DELETE /tenders/:id(.:format)             {:controller=>"tenders", :action=>"destroy"}
    exposures GET    /exposures(.:format)               {:controller=>"exposures", :action=>"index"}
              POST   /exposures(.:format)               {:controller=>"exposures", :action=>"create"}
 new_exposure GET    /exposures/new(.:format)           {:controller=>"exposures", :action=>"new"}
edit_exposure GET    /exposures/:id/edit(.:format)      {:controller=>"exposures", :action=>"edit"}
     exposure GET    /exposures/:id(.:format)           {:controller=>"exposures", :action=>"show"}
              PUT    /exposures/:id(.:format)           {:controller=>"exposures", :action=>"update"}
              DELETE /exposures/:id(.:format)           {:controller=>"exposures", :action=>"destroy"}
   currencies GET    /currencies(.:format)              {:controller=>"currencies", :action=>"index"}
              POST   /currencies(.:format)              {:controller=>"currencies", :action=>"create"}
 new_currency GET    /currencies/new(.:format)          {:controller=>"currencies", :action=>"new"}
edit_currency GET    /currencies/:id/edit(.:format)     {:controller=>"currencies", :action=>"edit"}
     currency GET    /currencies/:id(.:format)          {:controller=>"currencies", :action=>"show"}
              PUT    /currencies/:id(.:format)          {:controller=>"currencies", :action=>"update"}
              DELETE /currencies/:id(.:format)          {:controller=>"currencies", :action=>"destroy"}
     projects GET    /projects(.:format)                {:controller=>"projects", :action=>"index"}
              POST   /projects(.:format)                {:controller=>"projects", :action=>"create"}
  new_project GET    /projects/new(.:format)            {:controller=>"projects", :action=>"new"}
 edit_project GET    /projects/:id/edit(.:format)       {:controller=>"projects", :action=>"edit"}
      project GET    /projects/:id(.:format)            {:controller=>"projects", :action=>"show"}
              PUT    /projects/:id(.:format)            {:controller=>"projects", :action=>"update"}
              DELETE /projects/:id(.:format)            {:controller=>"projects", :action=>"destroy"}
       groups GET    /groups(.:format)                  {:controller=>"groups", :action=>"index"}
              POST   /groups(.:format)                  {:controller=>"groups", :action=>"create"}
    new_group GET    /groups/new(.:format)              {:controller=>"groups", :action=>"new"}
   edit_group GET    /groups/:id/edit(.:format)         {:controller=>"groups", :action=>"edit"}
        group GET    /groups/:id(.:format)              {:controller=>"groups", :action=>"show"}
              PUT    /groups/:id(.:format)              {:controller=>"groups", :action=>"update"}
              DELETE /groups/:id(.:format)              {:controller=>"groups", :action=>"destroy"}
        users GET    /users(.:format)                   {:controller=>"users", :action=>"index"}
              POST   /users(.:format)                   {:controller=>"users", :action=>"create"}
     new_user GET    /users/new(.:format)               {:controller=>"users", :action=>"new"}
    edit_user GET    /users/:id/edit(.:format)          {:controller=>"users", :action=>"edit"}
         user GET    /users/:id(.:format)               {:controller=>"users", :action=>"show"}
              PUT    /users/:id(.:format)               {:controller=>"users", :action=>"update"}
              DELETE /users/:id(.:format)               {:controller=>"users", :action=>"destroy"}
                     /:controller/:action/:id
                     /:controller/:action/:id(.:format)

Thanks in advance for the help

-Jon

A: 

Problem seems to be solved. There was a small bug in Rack:

http://github.com/rack/rack/commit/f6f3c60938ea3b08f3292a2480e6753c293584e5

I changed the file on my system as indicated because I wasn't sure how to properly udpate this from gitHub.

ruby gems update rack (?)

Anyone know this one?

CHsurfer