Rails如何以params结尾文件? .png,.jpg

时间:2011-09-19 07:09:44

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

我的图像路线有问题,因为它没有以params结束图像文件。

这是我的路线:

match '/photographer/image/:id/:filename' => 'application#photore'

我的控制员:

def photore
  redirect_to "http://s3-eu-west-1.amazonaws.com/mybucket/photographer/image/#{params[:id]}/#{params[:filename]}"
end

我需要文件,因为其他亚马逊S3不会加载图像。

2 个答案:

答案 0 :(得分:4)

aNoble朝着正确的方向前进,Rails格式处理可能正在吃延伸,但也可能因为它不是.html.js或其他任何一个而丢弃它它理解的扩展。尝试在路线:filename上设置一些约束:

match '/photographer/image/:id/:filename' => 'application#photore', :constraints => { :filename => /.*/ }

这应该允许将扩展名保留为params[:filename]的一部分。

答案 1 :(得分:3)

假设您正在运行Rails 3.1,我相信您正在寻找的是params[:format]。此功能从3.0更改为3.1,但似乎没有很好地记录。

试试这个:

def photore
  redirect_to "http://s3-eu-west-1.amazonaws.com/mybucket/photographer/image/#{params[:id]}/#{params[:filename]}.#{params[:format]}"
end

或者您应该能够将:format => false传递给match方法并保持photore方法不变:

match '/photographer/image/:id/:filename' => 'application#photore', :format => false