Rails 4:CSV下载中缺少模板

时间:2016-06-16 02:15:27

标签: ruby-on-rails csv

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下载中错过了什么?

1 个答案:

答案 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将查找要运行的视图模板。