Проблема с нестандартным маршрутом рельсов в 2.3.8 и Mongrel

У меня есть контроллер под названием «экспозиции», который я создал автоматически с помощью вызова скрипта / генерации скаффолда. Страницы каркаса работают нормально. Я создал настраиваемое действие под названием «тест» в контроллере экспозиций. Когда я пытаюсь вызвать страницу (http://127.0.0.1:3000/exposures/test/1) У меня пустой белый экран без текста в исходном тексте.

Я использую Rails 2.3.8 и mongrel в среде разработки. В development.log нет записей, а в консоли, которая использовалась для открытия mongrel, есть следующая ошибка:

Вы могли ожидать экземпляр Array. Ошибка произошла при оценке 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: в 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: в 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: в 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: в 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: в 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 / рубин / драгоценные камни / 1.8 / драгоценные камни / mongrel-1.1.2-x86-mswin32 / bin /../ lib / mongrel / configurator.r b: 282: в 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: в 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: / Рельсы / рубин / бин / mongrel_rails: 19

Вот код Exposures_controller:

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

Умные читатели заметят действие «графика». Это то, над чем я действительно хочу работать, но если я даже не могу заставить работать тестовое действие, то я уверен, что у меня нет шансов.

Любые идеи? Я перезапускал mongrel несколько раз без изменений.

Вот вывод Rake-маршрутов (но я не верю, что это проблема. Ошибка будет в форме ответа об ошибке HTML).

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)

Заранее спасибо за помощь

-Джон


person CHsurfer    schedule 30.05.2010    source источник


Ответы (1)