我要创建一个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按钮时,将显示以下错误:
答案 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文件中。