2011-11-27 35 views
0

我试图让重定向:使用参数重定向失败

redirect_to :controller => 'forex', :action => 'index', :format => :csv, :paramer =>  instrument_for_sql 

但在日志中我有:

重定向到http://localhost:3000/forex/index.csv?paramer=AUDJPY 完成406无法接受在150ms的

但是,如果我贴http://localhost:3000/forex/index.csv?paramer=AUDJPY直接它工作。

任何想法?

class ForexController < ApplicationController 
def index 
instrument_for_sql = params[:paramer] 
receive_csv 
respond_to do |format| 
    format.csv 
end 
end 

routes.rb 
match '/forex', :controller => 'forex', :action => 'index', :format => 'csv' 
+0

检查'paramer',它有错误,可能会导致问题 – megas

+0

请向我们展示您的'ForexController#index'操作。 –

+0

'paramer'可以。 –

回答

0

我解决了它。我试图在respond_to块中重定向。它在外面工作。当我在respond_to中使用format.html时,它也起作用。

respond_to do |format| 
format.html { redirect_to :controller => 'forex', :action => 'index', :format => :csv, :paramer => instrument_for_sql } 
0
def index 
    instrument_for_sql = params[:paramer] 
    receive_csv 
    redirect_to :controller => 'forex', :action => 'index', :format => :csv, :paramer =>  instrument_for_sql 
end 

试试这个,取出respond_to代码块。

+0

有问题的索引控制器不会重定向到它自己。这是不对的。 –

0

似乎Rails会在生成的url的情况下为您设置响应格式,并返回406 error,因为客户端不接受这样的响应。因此,尝试替代:

  • redirect_to的url_for(:only_path =>真实,:控制器=> '外汇', :动作=> '索引',:格式=>:CSV,:paramer => instrument_for_sql)
  • redirect_to的url_for(:控制器=> '外汇',:动作=> '索引',:格式=>:CSV,:paramer => instrument_for_sql):状态=> 301