2013-04-14 63 views
0

我有一個HTML文件,如下所示,位於下views/admin/ve_files/new.html.erbRails路由 - 下一步它在哪裏?

<div class="page-header"> 
    <h3>Hi</h3> 
</div> 
<%= simple_form_for @ve_file do |f| %> 
<%= f.file_field :file %> 
<br><br> 
<%= f.submit "Upload" %> 
<% end %> 
<br> 

後來才知​​道有controllers/admin/ve_files_controller.rb它看起來像這樣

require 'CSV' 

class Admin::VeFilesController < ApplicationController 

    layout 'admin' 

    def new 
     authorize! :create, :ve_file 
     @ve_file = VeFile.new 
    end 

    def create 
     puts "hello" 
     authorize! :create, :ve_file 
     #puts params 
     @ve_file = VeFile.new(params[:ve_file]) 
     puts "okay" 
     if @ve_file.save     
      CSV.foreach(@ve_file.file.path) do |row| 
       puts row[0] 
      end 

      redirect_to admin_ve_path, :notice => 'Hi' 
     else 
      render :new 
     end 
    end 
end 

所以在位於控制器,當我點擊HTML上傳按鈕文件,該程序試圖將我路由到哪裏?代碼中指定的地方在哪裏?我收到以下錯誤並沒有輸出到終端:

Routing Error 
uninitialized constant VeFilesController 

,因爲它應該是Admin::VeFilesController

回答

2

您使用的是被稱爲:admin命名空間,因此需要在您的來電simple_form_for指定。

你可以這樣做是這樣的:

<%= simple_form_for [:admin, @ve_file] do |f| %> 
+0

的感謝!解決了這個問題。但現在我得到這個錯誤: 在Admin :: VeFilesController中的NoMethodError#create 未定義的方法'file_will_change!'爲# CodeGuy

+0

很高興你的路由工作!聽起來像另一個問題需要問。也就是說,在你自己嘗試瞭解一下發生了什麼之後。 :) –