CSV
中有misc_definitions controller
下载功能。下载CSV
是通过form_tag
中的index.html.erb
实现的:
<%= form_tag misc_definitions_path(format: "csv", definition_category: 'role_definition'), method: :get do %>
<div class="form-inputs">
<%= label_tag(:index_from, "Index From") %>
<%= text_field_tag('index_from', '1', size: 6) %>
<%= label_tag(:token, "Token ") %>
<%= text_field_tag('token?', '', size: 12) %>
<%= submit_tag 'CSV' %>
</div>
<% end %>
在index
控制器中,它是:
def index
.....
respond_to do |format|
format.html {@misc_definitions = @misc_definitions.page(params[:page]).per_page(@max_pagination) }
format.csv do
send_data @misc_definitions.role_to_csv('role_definition', params[:index_from].to_i, params[:token?]) if @definition_category == 'role_definition'
end
end
end
点击CSV
页面上的index
后,应执行上面action index
中的代码,并在点击format.csv
后开始下载。但是缺少模板错误:
Missing template project_misc_definitionx/misc_definitions/index, project_misc_definitionx/application/index, application/index with {:locale=>[:"zh-CN"], :formats=>[:csv], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee]}. Searched in: * "C:/D/code/rails_proj/cis/app/views" * "C:/D/code/rails_proj/engines/user_manualx/app/views" * "C:/D/code/rails_proj/engines/project_misc_definitionx/app/views" *
我想知道为什么submit CSV
没有点击action index
,即使index.html.erb
下有C:/D/code/rails_proj/engines/user_manualx/app/views
。我在CSV
下载中错过了什么?
答案 0 :(得分:1)
这一行末尾的if
语句是罪魁祸首吗?
send_data @misc_definitions.role_to_csv('role_definition', params[:index_from].to_i, params[:token?]) if @definition_category == 'role_definition'
除非send_data
的值为@definition_category
,否则不会使用CSV数据运行role_definition
。在其他情况下,Rails将查找要运行的视图模板。