我正在做一些控制器来呈现报告,这是我的问题:
用户打开一个页面,其中包含一个表单,可以更改下载格式和报告日期。
通过选择输入设置下载格式。
当用户按下我想要响应的按钮时,取决于所选的格式。
问题是它是通过url指定的。所以尝试做类似的事情:
case format
when "xlsx" then format.xlsx{...}
when "html" then format.html{...}
...
end
不起作用,因为rails或浏览器(我不确定)需要html响应。
我有两种选择:
更改表单onsubmit
的网址,使应用程序更依赖于javascript。或
redirect_to url + ".#{params[:download_format]}"
第二种方式对我来说看起来更好,但我需要在网址中传递:report_date
,我找不到办法。
我试过这个:
url = my_custom_url_path
redirect_to url + ".#{params[:download_format]}", :date_format => params[:date_format]
但它不起作用。
答案 0 :(得分:1)
表格形式:
<%= f.select :download_format, { "xlsx" => "xlsx, "Online" => "html" } %>
在控制器中:
def action
if download_format = params[:download_format].delete
redirect_to my_action_path(options.merge( :format => download_format ) ) and return
end
# do some logic here
respond_to do |format|
format.xlsx{...}
format.html{...}
end
end