मुझे अपने रेल ऐप में निम्न त्रुटि प्राप्त हो रही है जब मैं किसी पृष्ठ को एक्सेस करने का प्रयास करता हूं जिसमें कोई पोस्ट बनाने के लिए कोई फॉर्म होता है। मैं उसका नमूना अनुप्रयोग में एक सुविधा माइकल हार्टल के 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
'<% = form_for (@post) do | f | %> '' <% = form_for (post.new) में बदलें | f | %> ' – codeit
अंतिम टिप्पणी रूट समस्या को हल नहीं करती है। आरईएसटी HTTP के रेल उपयोग को पूरी तरह जोड़ने के बजाय, यह उस फॉर्म के लिए एक पोस्ट ऑब्जेक्ट बनाता है। जब आप @post में संग्रहीत पहले से बनाई गई ऑब्जेक्ट को संपादित करने के लिए इस फ़ॉर्म का उपयोग करते हैं तो यह एक समस्या बन जाती है। समस्या की जड़ पाने के लिए, क्या आप अपनी रूट.आरबी फाइल पोस्ट कर सकते हैं? – westonplatter
क्षमा करें, '<% = form_for Post.new,: url => {: action =>: create,: controller =>: posts} do | f | %> 'यह काम करना चाहिए। – codeit