0

script/generate scaffold 呼び出しで自動的に作成した「exposures」というコントローラーがあります。足場ページは正常に機能します。露出コントローラーで「テスト」というカスタム アクションを作成しました。ページ ( 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: 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:in処理中' 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:in処理中' 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 process_client' D:/Rails/ruby/lib/ruby/gems/1.8/gems/mongrel-1.1.2-x86-mswin32/bin/../lib/mongrel.rb:285:in:実行中' 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: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

これが 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

賢明な読者は、「グラフ」アクションに気付くでしょう。これは私が本当にやりたいことですが、テスト アクションを実行することさえできなければ、チャンスはないと確信しています。

何か案は?雑種を数回再起動しましたが、変更はありません。

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)

助けてくれてありがとう

-ジョン

4

1 に答える 1

0

問題は解決したようです。ラックに小さなバグがありました:

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

gitHub からこれを適切に更新する方法がわからなかったため、示されているようにシステム上のファイルを変更しました。

ruby gems update rack (?)

これ知ってる人いる?

于 2010-05-30T20:45:12.287 に答える