2013-03-08 11 views
6

मुझे अपने रेल ऐप में निम्न त्रुटि प्राप्त हो रही है जब मैं किसी पृष्ठ को एक्सेस करने का प्रयास करता हूं जिसमें कोई पोस्ट बनाने के लिए कोई फॉर्म होता है। मैं उसका नमूना अनुप्रयोग में एक सुविधा माइकल हार्टल के Micropost सुविधा के लिए इसी तरह लागू करने के लिए कोशिश कर रहा हूँ:अपरिभाषित विधि _path (NoMethodError)

<%= render 'shared/post_form' if user_signed_in? %> 

_post_form.html:

NoMethodError in Home#index 
undefined method `posts_path' for #<#<Class:0xb5c70744>:0xb60013b8> 

यहाँ उस प्रपत्र को सम्मिलित करने के कोड शामिल सूचकांक दृश्य पृष्ठ है .erb:

class HomeController < ApplicationController 

    before_filter :authenticate_user! 

    def index 
    #render :text => "Welcome #{current_user.email}!" 
    @users = User.all 
    @post = current_user.posts.build if signed_in? 
    end 
end 
:

<%= form_for(@post) do |f| %> 
    <%= render 'shared/error_messages', object: f.object %> 
    <div class="field"> 
    <%= f.text_area :content, placeholder: "Provide your network with a status update..." %> 
    </div> 
    <%= f.submit "Post", class: "btn btn-large btn-primary" %> 
<% end %> 

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

मैं वास्तव में कोड की समीक्षा में कुछ मदद का उपयोग कर सकता हूं। मैं इस पर घूर रहा हूं और मुझे किसी और की समीक्षा करने के लिए इसकी आवश्यकता है। मैं रेल के लिए नया हूं इसलिए कृपया मुझे माफ़ कर दो अगर मैंने आवश्यक जानकारी प्रदान नहीं की है।

अतिरिक्त जानकारी: मैं उपयोगकर्ता प्रमाणीकरण को संभालने के लिए डेविस मणि का उपयोग कर रहा हूं।

धन्यवाद!

संपादित करें: मैंने गलत नियंत्रक जोड़ा।

संपादित करें 2:

routes.rb फ़ाइल:

AppName::Application.routes.draw do 

    #get "users/index" 

    #get "users/show" 



authenticated :user do 
    root :to => 'home#index' 
    end 
    root :to => "home#index" 
    devise_for :users 
    resources :users do 
    member do 
     get :following, :followers, :posts 
    end 
    end 
    resources :works 
    resources :relationships, only: [:create, :destroy] 
end 

संपादित करें 3: रैक मार्गों

root  /       home#index 
        root  /       home#index 
     new_user_session GET /users/sign_in(.:format)  devise/sessions#new 
      user_session POST /users/sign_in(.:format)  devise/sessions#create 
    destroy_user_session DELETE /users/sign_out(.:format)  devise/sessions#destroy 
      user_password POST /users/password(.:format)  devise/passwords#create 
     new_user_password GET /users/password/new(.:format) devise/passwords#new 
     edit_user_password GET /users/password/edit(.:format) devise/passwords#edit 
         PUT /users/password(.:format)  devise/passwords#update 
cancel_user_registration GET /users/cancel(.:format)  devise/registrations#cancel 
     user_registration POST /users(.:format)    devise/registrations#create 
    new_user_registration GET /users/sign_up(.:format)  devise/registrations#new 
    edit_user_registration GET /users/edit(.:format)   devise/registrations#edit 
         PUT /users(.:format)    devise/registrations#update 
         DELETE /users(.:format)    devise/registrations#destroy 
      following_user GET /users/:id/following(.:format) users#following 
      followers_user GET /users/:id/followers(.:format) users#followers 
       posts_user GET /users/:id/posts(.:format)  users#posts 
        users GET /users(.:format)    users#index 
         POST /users(.:format)    users#create 
       new_user GET /users/new(.:format)   users#new 
       edit_user GET /users/:id/edit(.:format)  users#edit 
        user GET /users/:id(.:format)   users#show 
         PUT /users/:id(.:format)   users#update 
         DELETE /users/:id(.:format)   users#destroy 
        works GET /works(.:format)    works#index 
         POST /works(.:format)    works#create 
       new_work GET /works/new(.:format)   works#new 
       edit_work GET /works/:id/edit(.:format)  works#edit 
        work GET /works/:id(.:format)   works#show 
         PUT /works/:id(.:format)   works#update 
         DELETE /works/:id(.:format)   works#destroy 
      relationships POST /relationships(.:format)  relationships#create 
      relationship DELETE /relationships/:id(.:format) relationships#destroy 
+0

'<% = form_for (@post) do | f | %> '' <% = form_for (post.new) में बदलें | f | %> ' – codeit

+0

अंतिम टिप्पणी रूट समस्या को हल नहीं करती है। आरईएसटी HTTP के रेल उपयोग को पूरी तरह जोड़ने के बजाय, यह उस फॉर्म के लिए एक पोस्ट ऑब्जेक्ट बनाता है। जब आप @post में संग्रहीत पहले से बनाई गई ऑब्जेक्ट को संपादित करने के लिए इस फ़ॉर्म का उपयोग करते हैं तो यह एक समस्या बन जाती है। समस्या की जड़ पाने के लिए, क्या आप अपनी रूट.आरबी फाइल पोस्ट कर सकते हैं? – westonplatter

+1

क्षमा करें, '<% = form_for Post.new,: url => {: action =>: create,: controller =>: posts} do | f | %> 'यह काम करना चाहिए। – codeit

उत्तर

18

आप रेल के लिए स्वचालित रूप से करने के लिए आपके routes.rb फ़ाइल में resources :posts जोड़ने की जरूरत आपके लिए posts_path सहायक बनाएं।

resources :posts जोड़ना posts बनाने, हटाने, अपडेट करने और लाने के लिए उचित रीस्टफुल मार्ग उत्पन्न करेगा। रूटिंग के लिए रेल गाइड पर रुबी पर नज़र डालें, विशेष रूप से this section here रूटिंग और रीस्टफुल मार्गों पर।

+0

हाय ज़जन, उत्तर के लिए आपको बहुत बहुत धन्यवाद। यह काम किया। मैंने संसाधनों को जोड़ने पर विचार नहीं किया: पदों क्योंकि माइकल हार्टल का ट्यूटोरियल इसे छोड़ना प्रतीत होता था (मुझे समझ में नहीं आता क्यों)। मुझे यह वैसे भी कोशिश करनी चाहिए! आपकी मदद, और उत्तर देने वाले हर किसी की बहुत सराहना की जाती है! – winston

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