用params重定向失败

时间:2011-11-27 01:11:45

标签: ruby-on-rails ruby-on-rails-3

我正在尝试重定向:

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

但在日志中我有:

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

但如果我直接粘贴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'

3 个答案:

答案 0 :(得分: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阻止。

答案 1 :(得分:0)

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

  • redirect_to url_for(:only_path =&gt; true,:controller =&gt;'forex', :action =&gt; 'index',:format =&gt; :csv,:paramer =&gt; instrument_for_sql)
  • redirect_to url_for(:controller =&gt;'forex',:action =&gt;'index',:format =&gt;:csv,:paramer =&gt; instrument_for_sql),:status =&gt; 301

答案 2 :(得分: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 }