1

我正在做一些控制器来呈现报告,这是我的问题:

用户打开一个带有表单的页面,可以更改下载格式和报告的日期。

下载格式通过选择输入设置。

当用户按下按钮时,我想根据所选格式做出响应。

问题是它是通过 url 指定的。所以尝试做类似的事情:

case format
when "xlsx" then format.xlsx{...}
when "html" then format.html{...}
...
end

不起作用,因为 rails 或浏览器(我不确定)需要 html 响应。

我有两个选择:

  1. 更改表单的 url,onsubmit使应用程序更加依赖于 javascript。或者。

  2. redirect_to url + ".#{params[:download_format]}"

第二种方法对我来说看起来更好,但我需要:report_date在 url 中传递,但我找不到这样做的方法。

我试过这个:

url = my_custom_url_path
redirect_to url + ".#{params[:download_format]}", :date_format => params[:date_format]

但它不起作用。

4

1 回答 1

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
于 2012-11-02T13:05:57.227 回答