我已添加以下代码以下载CSV:
<%= form_tag(account_export_courses_list_path(@account), :method => :get) do |f| %>
<a data-submit-form href="#" class="btn button-sidebar-wide"><i class="icon-export-content"></i> <%= t(:export_course_list_link, "Export Course List") %></a>
<% end %>
如果我检查元素,那么我可以看到以下内容:
<form method="get" action="/accounts/1/courses/export_list" accept-charset="UTF-8"><div style="margin:0;padding:0;display:inline"><input type="hidden" value="✓" name="utf8"></div>
<a class="btn button-sidebar-wide" href="#" data-submit-form=""><i class="icon-export-content"></i> Export Course List</a>
</form>
我的控制器中添加了以下代码:
def export_courses_list
puts "===-----------------------------------==="
if authorized_action(@context, @current_user, :export_course_list)
puts "-------"
report = CsvService.new(@context.courses.active.order(:name, :created_at).all, {
fields:[
{attribute_name: "name", display_name: "Course Name"},
{attribute_name: "course_code", display_name: "Course Code"},
{attribute_name: "created_at", display_name: "Created Date"}
]
})
send_data report.to_csv, :filename => "Courses.csv"
end
end
我的路线如下:
match 'courses/export_list' => 'accounts#export_courses_list', :as => :export_courses_list
点击链接后,&#34;导出课程列表&#34;我应该能够下载CSV。但我无法看到任何行动。提前谢谢。
答案 0 :(得分:1)
移动此路线
match 'courses/export_list' => 'accounts#export_courses_list', :as => :export_courses_list
以上路线
resources :courses
然后在link_to
中使用它。它应该工作。
答案 1 :(得分:-1)
我认为行动已经完成。
如果您不确定,请将其删除,然后再次尝试点击链接。
您可以使用Rails.logger.info
代替puts
来确保正确写入日志。
<强>更新强>
我以为你可以下载csv,但可能不是
您的路线会将网址/courses/export_list
映射到export_courses_list
AccountsController
但是表单中的网址是/accounts/1/courses/export_list
,因此不会执行操作
您可以将路线更改为此类
resources :accounts do
member do
get :export_courses_list, path: :export_list
end
end
并在视图中使用link
而不是form
<%= link_to export_courses_list_account_path(1), class: "btn button-sidebar-wide" do %>
<i class="icon-export-content"></i> Export Course List
<% end %>