méthode non _path (NoMethodError)

Je reçois l'erreur suivante dans mon application Rails, lorsque j'essaie d'accéder à une page qui contient un formulaire pour créer un post. Je suis en train de mettre en œuvre une fonctionnalité similaire à Michael Hartl de Micropost fonctionnalité dans son exemple d'application:

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

Voici la vue index page qui contient le code à insérer la forme:

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

_post_form.html.erb:

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

Est ici la Maison de contrôleur:

    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

Je peux vraiment utiliser un peu d'aide dans la révision du code. Je regarde ça et j'ai besoin de quelqu'un d'autre de le revoir pour moi. Je suis nouveau sur les Rails, de sorte s'il vous plaît pardonnez-moi si je n'ai pas fournir les informations nécessaires.

Informations supplémentaires: je suis en utilisant le dispositif de gem pour gérer l'authentification de l'utilisateur.

Merci!

EDIT: j'ai ajouté le mauvais contrôleur.

EDIT 2:

Routes.rb fichier:

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

EDIT 3: Rake routes

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| %> changement de <%= form_for(Post.new) do |f| %>
  • Le dernier commentaire ne permet pas de résoudre le problème à la source. Plutôt que entièrement Rails de l'utilisation du RESTE de HTTP, il crée un Post pour objet de ce formulaire. Cela devient un problème lorsque vous utilisez le présent formulaire pour la Modification d'un objet déjà créé stockées dans @poste. Pour obtenir à la racine du problème, vous pouvez poster vos itinéraires.rb fichier?
  • Désolé, <%= form_for Post.new ,:url => {:action => :create, :controller => :posts} do |f| %> cela devrait fonctionner.
  • Merci pour l'aide tout le monde. J'ai ajouté le droit à la Maison contrôleur de code et j'ai également ajouté les routes.rb code
  • vous n'avez pas besoin de s'signé vous si vous avez une avant de filtre d'authentifier l'utilisateur
  • pouvez-vous faire un râteau routes? on dirait qu'il est d'aller à votre posts_path mais votre immeuble, dans la maison de contrôleur. vous devriez avoir def nouveau et def créer
  • Ajouté râteau routes. Merci pour l'aide. Où dois-je définir la nouvelle et de créer des actions? Dans la Maison de contrôleur?

InformationsquelleAutor winston | 2013-03-08