我将rails中的路由错误视为未初始化的常量UserController

时间:2016-06-03 12:22:39

标签: ruby-on-rails ruby database csv

我要创建一个rails应用程序,它从csv文件中获取输入并在网页上显示。

在做完所有需要的东西之后我面对这个: 路由错误

未初始化的常量UserController

我的app \ controllers \ users_controller.rb文件是: -

class UsersController < ApplicationController
   def index
    @users=User.all
   end

   def import
    User.import(params[:file])
    redirect_to root_url, notice: "Activity data imported!"
   end
end

我的app \ model \ user.rb文件是: -     class User&lt;的ActiveRecord :: Base的       要求&#39; csv&#39;

  def self.import(file)
    CSV.foreach(file.path, headers:true) do |row|
        User.create! row.to_hash
    end
  end
end

我的app / views / users / index.html.erb文件是: -

 <%= flash[:notice] %>

 <table>
 <thead>
    <tr>
        <th>Name</th>
        <th>Name</th>
    </tr>
 </thead>

<tbody>
    <% @users.each do |user| %>
    <tr>
        <td><%= user.user %></td>
        <td><%= user.age %></td>
    </tr>
    <% end %>
</tbody>
</table>

<div>
<h4>Import the data!</h4>
<%= form_tag import_users_path, multipart: true do %>
<%= file_field_tag :file %>
<%= submit_tag "Import CSV" %>
<% end %>
</div>

我的config \ routes.rb文件是: -

Rails.application.routes.draw do
get 'users/index'

get 'users/import'

resources :users do
 collection {post :import}
end
root to: "user#index"
end

我还没有在routes.rb文件中发布任何#marked注释行。 输出屏幕的快照如下: - 单击导入csv按钮时,将显示以下错误:

3 个答案:

答案 0 :(得分:2)

您只是在UsersController与UserController的复数形式中存在不匹配。 Rails中的约定是使用复数作为控制器名称。

将routes.rb文件中的行更改为:

root to: "users#index"

答案 1 :(得分:0)

将控制器文件从app \ controllers \ users_controller.rb更改为app \ controllers \ user_controller.rb

答案 2 :(得分:0)

根据错误,问题是路由错误,请检查route.rb文件,根据上述答案,您需要更改行

result = [list(g) for i, g in groupby(sorted(A))]

root to: "user#index"

在config \ routes.rb文件中。