respond_to阻止在移动版rails应用程序中无效

时间:2014-10-22 11:04:37

标签: ruby-on-rails mime-types prawn

最近我在我的应用程序中添加了移动屏幕,之后,response_to阻止不是

mime_type.rb

Mime::Type.register_alias "text/html", :mobile
Mime::Type.register "applications/xls", :xls

控制器

def index
 @customer_ord = CustomerOrder.all
 respond_to do |format|
 format.html
 format.csv #{send_data @customer_ord.to_csv}
 format.xls #{send_data @customer_orders.to_csv(col_sep: "/t")}
 format.pdf end  end

pdf,xls链接视图

<%= link_to "PDF", customer_orders_path(format: "pdf"), :target => 'blank'%>
<%= link_to "CSV", customer_orders_path(format: "csv")%>  
<%= link_to "EXCEL", customer_orders_path(format: "xls")%> 

添加mime类型移动后,我使用单独的移动屏幕。在应用程序的移动版本中,respond_to阻止无效。

对于json方法也没有用,我有

respond_to do |format|
format.json { render json: @price_prod.price }
end

我把它改成了

render json: @price_prod.price

它现在正在运行,但对于pdf,xls生成无效,请帮助

1 个答案:

答案 0 :(得分:0)

它只响应移动格式,因为我在我的应用程序控制器中有这个代码

 def prepare_for_mobile
  session[:mobile_param] = params[:mobile] if params[:mobile]
  request.format = :mobile if mobile_device?
 end

我把它改成了

def prepare_for_mobile
  session[:mobile_param] = params[:mobile] if params[:mobile]
  if mobile_device? &&  request.format == :pdf
  request.format = :pdf
  elsif mobile_device? &&  request.format == :xls
  request.format = :xls 
  elsif mobile_device? &&  request.format == :csv
  request.format = :csv
  elsif mobile_device?
  request.format = :mobile
  end
end

它对我有用,但可能有更好的方法来解决它。