我有一个如下的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
答案 0 :(得分:2)
您正在使用名为:admin
的命名空间,因此需要在调用simple_form_for
时指定。
你可以这样做:
<%= simple_form_for [:admin, @ve_file] do |f| %>