2016-06-03 2 views
0

Ich werde eine Rail-Anwendung erstellen, die Eingabe aus einer CSV-Datei nimmt und auf der Webseite anzeigen.Ich bin mit dem Routing-Fehler in Schienen als nicht initialisierte Konstante konfrontiert. UserController

Nachdem ich alle nötig stopft Ich bin vor dieser: Routing Fehler

nicht initialisierte Konstante Usercontroller

Meine app \ Controller \ users_controller.rb Datei ist: -

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 

Meine app \ model \ user.rb-Datei ist: - Klasse Benutzer < ActiveRecord :: Base erfordern 'csv'

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

Meine app/views/users/index.html.erb Datei ist: -

<%= 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> 

Meine config \ routes.rb Datei ist: -

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

get 'users/import' 

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

Ich habe keine #markierte kommentierte Zeile aus routes.rb Datei hier gepostet. Der Schnappschuss des Ausgangsschirms ist hier: - wenn auf den Import CSV-Taste wird der folgende Fehler klicken wird angezeigt:

+1

Benennen Sie 'UsersController' in' UserController' um –

+2

Ändern Sie die Routenzeile zu 'root to:" users # index "' – Anand

+0

Muss ich irgendeinen Dateinamen ändern? – Charleemagnee

Antwort

2

Sie haben nur eine Diskrepanz in der Pluralisierung von Userscontroller vs Usercontroller. Die Konvention in Rails verwendet Plural für Controller-Namen.

Ändern Sie die Zeile in Ihrer routes.rb-Datei:

root to: "users#index" 
0

Change-Controller-Datei von app \ Controller \ users_controller.rb zu app \ Controller \ user_controller.rb

+1

Bro, sollten wir nicht gegen Schienen Standardkonvention gehen :) – Mukesh

+0

Rails = Konvention über Konfiguration. Es ist eine kleine teuflische Sache, es anders zu machen –

+0

@Mukesh und Ruben Barbosa: Mein Bad – Lucas

0

Gemäß der Fehler der Problem ist, Routing Fehler so die route.rb Datei überprüfen und gemäß den oben genannten Antworten müssen Sie die Zeile

root to: "user#index" 

zu

ändern
root to: "users#index" 

in der Datei config \ routes.rb.

+0

thnank u ,, es funktioniert – Charleemagnee

+0

Great .. Viel Glück voraus – Nirupa

Verwandte Themen