Rails 多个 CSV 导出按钮路由
Rails Multiple CSV Export Buttons Routing
我想在页面上添加两个按钮,每个按钮下载一个包含不同信息的不同 CSV 文件。但是,我正在努力将控制器路由到两个不同的下载。
我用一个按钮下载一个文件,但现在我添加了一个新参数来区分这两个按钮(和 link 到要下载的两个不同文件)并且它说 "MISSING TEMPLATE".
这是我的控制器代码:
def show
@shareholder = Shareholder.find(params[:id])
respond_to do |format|
format.html
format.csv do
if(params[:set] == 1) then
send_data @shareholder.acquired_csv, filename: @shareholder.name + "-acquired-shares-#{Date.today}.csv"
end
if(params[:set] == 2) then
send_data @shareholder.summary_csv, filename: @shareholder.name + "-sold-shares-#{Date.today}.csv"
end
end
end
end
这是我的行动项目的代码:
action_item :acquired_shares_csv, only: :show do
link_to 'Acquired Shares CSV', shareholder_path( format: :csv, id: params[:id], set: 2 )
end
action_item :sold_shares_csv, only: :show do
link_to 'Sold Shares CSV', shareholder_path( format: :csv, id: params[:id], set: 1 )
end
有谁知道我可以做些什么来拥有这两个按钮?
我假设问题出在这个条件语句中params[:set] == 1
这里所有的参数都是字符串。
it is saying "MISSING TEMPLATE".
format.csv do
if params[:set] == 1
# ....
end
if params[:set] == 2
# ....
end
end
在这种情况下,params[:set]
是一个字符串并变为 "1"
或 "2"
,您的条件语句都被跳过并且 Rails 无法找到模板并引发MISSING TEMPLATE
错误。
将代码从 params[:set] == 1
更改为 params[:set] == "1"
或 params[:set].to_i == 1
这应该可以解决您的问题。
我想在页面上添加两个按钮,每个按钮下载一个包含不同信息的不同 CSV 文件。但是,我正在努力将控制器路由到两个不同的下载。
我用一个按钮下载一个文件,但现在我添加了一个新参数来区分这两个按钮(和 link 到要下载的两个不同文件)并且它说 "MISSING TEMPLATE".
这是我的控制器代码:
def show
@shareholder = Shareholder.find(params[:id])
respond_to do |format|
format.html
format.csv do
if(params[:set] == 1) then
send_data @shareholder.acquired_csv, filename: @shareholder.name + "-acquired-shares-#{Date.today}.csv"
end
if(params[:set] == 2) then
send_data @shareholder.summary_csv, filename: @shareholder.name + "-sold-shares-#{Date.today}.csv"
end
end
end
end
这是我的行动项目的代码:
action_item :acquired_shares_csv, only: :show do
link_to 'Acquired Shares CSV', shareholder_path( format: :csv, id: params[:id], set: 2 )
end
action_item :sold_shares_csv, only: :show do
link_to 'Sold Shares CSV', shareholder_path( format: :csv, id: params[:id], set: 1 )
end
有谁知道我可以做些什么来拥有这两个按钮?
我假设问题出在这个条件语句中params[:set] == 1
这里所有的参数都是字符串。
it is saying "MISSING TEMPLATE".
format.csv do
if params[:set] == 1
# ....
end
if params[:set] == 2
# ....
end
end
在这种情况下,params[:set]
是一个字符串并变为 "1"
或 "2"
,您的条件语句都被跳过并且 Rails 无法找到模板并引发MISSING TEMPLATE
错误。
将代码从 params[:set] == 1
更改为 params[:set] == "1"
或 params[:set].to_i == 1
这应该可以解决您的问题。