2013-09-30 4 views
9

मुझे /users/new पर Unable to autoload constant UsersController, expecting /app/controllers/users_controller.rb to define it के रूप में /users/new पर जाकर त्रुटि मिल रही है।त्रुटि प्राप्त करने के रूप में निरंतर उपयोगकर्ताओं को नियंत्रित करने में असमर्थ उपयोगकर्ता नियंत्रक

यहाँ नियंत्रक कोड

class UserController < ApplicationController 
    def new 
     @user = User.new 
    end 

    def create 
     @user = User.new(params[:user]).permit(:email, :password,:password_confirmation) 

     respond_to do |format| 
     if @user.save 
     format.html { redirect_to new_user_path, notice: 'User was successfully created.' } 
     format.json { render action: 'show', status: :created, location: @user } 
     else 
     format.html { render action: 'new' } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
     end 
    end 
    end 

और new.html.erb मेरे पास है के लिए दृश्य है:

<h1>Sign up</h1> 

    <%= form_for(@user) do |f| %> 

    <% if @user.errors.any? %> 
     <div id="error_explanation"> 
     <h2><%= pluralize(@user.errors.count, "error") %> prohibited this post from being  saved:</h2> 

     <ul> 
      <% @user.errors.full_messages.each do |msg| %> 
      <li><%= msg %></li> 
      <% end %> 
     </ul> 
    </div> 
    <% end %> 
    <div class="field"> 
    <%= f.label :email %><br> 
    <%= f.text_field :email %> 
    </div> 
    <div class="field"> 
    <%= f.label :password %><br> 
    <%= f.password_field :password %> 
    </div> 
    <div class="field"> 
    <%= f.label :password_confirmation, "Confirmation" %> 
    <%= f.password_field :password_confirmation %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Create my account" %> 
    </div> 
<% end %> 

User मॉडल:

class User < ActiveRecord::Base 
    has_many :projects 
    has_many :pledges 
    has_many :posts 
    has_many :comments 
end 
+6

बदलें '' UserController' UsersController' को (रेल में प्रथा के अनुसार, नियंत्रक नाम संसाधन का बहुवचन रूप होना चाहिए)। –

+0

धन्यवाद @ZachKemp। यह मेरे लिए काम किया। – Preethika

उत्तर

14

रेल उम्मीद नियंत्रक नाम बहुवचन किया जाना है। पहले फ़ाइल की सामग्री के पहले लाइन आप पोस्ट विलक्षण रूप में लिखा है:

/app/controllers/users_controller.rb में आप हैं:

वर्ग उपयोगकर्ता नियंत्रक < ApplicationController

इसके बजाय, यह होना चाहिए :

कक्षा उपयोगकर्ता नियंत्रक < ApplicationController


यह Rails Guide अपने मार्गों फ़ाइल में एक संसाधन को परिभाषित करने के लिए एक उदाहरण प्रदान करता है। इसके अलावा, एक सूचनात्मक नोट है जो बताता है कि resource विधि वाले मार्गों को परिभाषित करने से हमेशा नियंत्रक के बहुवचन नाम पर नक्शा होगा।

यह मार्गदर्शिका से सूचनात्मक नोट है।

क्योंकि आप एकवचन मार्ग (/ खाता) और बहुवचन मार्ग (/ खातों/45) के लिए एक ही नियंत्रक का उपयोग करना चाहते हैं, बहुवचन संसाधनों को एकवचन संसाधन मानचित्र के लिए उपयोग करना चाहते हैं। इसलिए, उदाहरण के लिए, संसाधन: फोटो और संसाधन: फ़ोटो एकवचन और बहुवचन मार्ग दोनों बनाती हैं जो एक ही नियंत्रक (फ़ोटोकंट्रोलर) पर मैप करती हैं।

स्रोत: Resource Routing: The Rails Default

+0

क्या आप कृपया अपने स्रोत का हवाला देते हैं "रेल उम्मीद करता है कि नियंत्रक नाम बहुवचन के लिए।" – yekta

+0

@yekta मैंने एक स्रोत के साथ कुछ अतिरिक्त जानकारी जोड़ा। यह इस तथ्य पर जोर देता है कि बहुवचन नियंत्रक सम्मेलन हैं। जानकारी एक साइड नोट में दफनाया गया है। बहुवचनीकरण पूरे गाइड, और रेलों में ही अंतर्निहित है। डिफ़ॉल्ट को ओवरराइड करना और एकवचन नियंत्रक का उपयोग करना संभव है। – sealocal

+0

स्रोत के लिए धन्यवाद। बहुवचन ने हालांकि मेरी समस्या का समाधान नहीं किया। मेरे मामले में मैं एप्लिकेशन कंट्रोलर में 'अनलोड करने योग्य' का उपयोग कर रहा था, इसे हटाकर इसे हल कर दिया। – yekta

संबंधित मुद्दे

 संबंधित मुद्दे