我希望在页面上添加两个按钮,每个按钮都下载一个包含不同信息的不同CSV文件。但是,我正在努力将控制器路由到两个不同的下载位置。
我可以使用一个按钮下载一个文件,但是现在我添加了一个新参数来区分两个按钮(并链接到要下载的两个不同文件),并说“ 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
有人知道我可以做两个按钮吗?
答案 0 :(得分:0)
我认为问题在于此条件语句params[:set] == 1
中的所有参数都在此处为字符串。
它说的是“模板缺失”。
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
,这样可以解决您的问题。