Rails路由 - 接下来会去哪里?

时间:2013-04-14 20:28:44

标签: ruby-on-rails ruby routing

我有一个如下的html文件,位于views/admin/ve_files/new.html.erb

<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

1 个答案:

答案 0 :(得分:2)

您正在使用名为:admin的命名空间,因此需要在调用simple_form_for时指定。

你可以这样做:

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