我在Rails应用程序中有一个URL,看起来像一个简单的/resource
或更复杂的/resource?page=3&sort=id&direction=asc
。可以通过将.tsv
附加到资源名称 - /resource.tsv?page=3&sort=id&direction=asc
来导出视图背后的数据。为此,我在我的.erb
:add_extension_to_url(request.original_url, '.tsv')
中使用此调用:
module ResourceHelper
def add_extension_to_url(url, extension)
query_start = url.index('?')
if query_start.present?
url.insert(query_start, extension)
else
url + extension
end
end
end
它有效,但它并不漂亮。我错过了request.query_string
这样的内容,它会告诉我URL中的问号之后的内容吗?
答案 0 :(得分:1)
你所谓的“扩展”是Rails术语中的“格式”。您可以使用路由系统生成URL时指定格式。类似的东西:
order_path(@order, format: :tsv)
如果你想保留一个现有的查询字符串(带有排序,分页和诸如此类的东西),你可以这样做
order_path(@order, params.merge(format: :tsv))
至于安全问题,只要您过滤params
以使其仅包含预期值,您就应该没问题。惯用的方法是使用strong_parameters(包含在Rails 4中)。