Rails控制器不解码URL。这是对的吗?

时间:2015-12-03 09:02:34

标签: ruby-on-rails

我正在提出请求 http://localhost:3000/templates/2.jpg?template_usage=0

一切正常。 但是当我提出要求时 http://localhost:3000/templates/2.jpg%3Ftemplate_usage%3D0

我收到了 ActionController :: UnknownFormat - ActionController :: UnknownFormat: 因为控制器知道格式是jpg?template_usage = 0

这是预期的行为吗?我怎么能解决这个问题?

这是控制器代码

def show
    respond_to do |format|
        format.html do
... return html
        end
        format.jpg do 
 ... return jpg
        end
    end
end

1 个答案:

答案 0 :(得分:0)

这是完全正确的,它正是逃避字符的目的....如果你想要一个?作为数据传递而不是作为参数的开始,你将逃避它。

如果由于某种原因你必须通过转义字符,那么你必须自己解析格式,但这是代码味道。

def show
  my_format = params[:format].split('?').first
  case my_format
  when 'jpg'
    ...

请注意,您还需要传递任何参数并自行解析。