ruby-on-rails – 未定义的方法_path(NoMethodError)

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 未定义的方法_path(NoMethodError)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当我尝试访问包含创建帖子的表单的页面时,我在Rails应用程序中收到以下错误.我正在尝试在他的示例应用程序中实现类似于Michael Hartl的Micropost功能功能
  1. NoMethodError in Home#index
  2. undefined method `posts_path' for #<#<Class:0xb5c70744>:0xb60013b8>

这是索引视图页面,其中包含插入表单的代码

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

_post_form.html.erb:

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

这是Home控制器:

  1. class HomeController < ApplicationController
  2.  
  3. before_filter :authenticate_user!
  4.  
  5. def index
  6. #render :text => "Welcome #{current_user.email}!"
  7. @users = User.all
  8. @post = current_user.posts.build if signed_in?
  9. end
  10. end

我可以在查看代码时使用一些帮助.我正盯着它,我需要别人为我审查.我是Rails的新手,如果我没有提供必要的信息,请原谅我.

附加信息:我正在使用Devise gem来处理用户身份验证.

谢谢!

编辑:我添加错误的控制器.

编辑2:

Routes.rb文件

  1. AppName::Application.routes.draw do
  2.  
  3. #get "users/index"
  4.  
  5. #get "users/show"
  6.  
  7.  
  8.  
  9. authenticated :user do
  10. root :to => 'home#index'
  11. end
  12. root :to => "home#index"
  13. devise_for :users
  14. resources :users do
  15. member do
  16. get :following,:followers,:posts
  17. end
  18. end
  19. resources :works
  20. resources :relationships,only: [:create,:destroy]
  21. end

编辑3:耙路线

  1. root / home#index
  2. root / home#index
  3. new_user_session GET /users/sign_in(.:format) devise/sessions#new
  4. user_session POST /users/sign_in(.:format) devise/sessions#create
  5. destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
  6. user_password POST /users/password(.:format) devise/passwords#create
  7. new_user_password GET /users/password/new(.:format) devise/passwords#new
  8. edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
  9. PUT /users/password(.:format) devise/passwords#update
  10. cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
  11. user_registration POST /users(.:format) devise/registrations#create
  12. new_user_registration GET /users/sign_up(.:format) devise/registrations#new
  13. edit_user_registration GET /users/edit(.:format) devise/registrations#edit
  14. PUT /users(.:format) devise/registrations#update
  15. DELETE /users(.:format) devise/registrations#destroy
  16. following_user GET /users/:id/following(.:format) users#following
  17. followers_user GET /users/:id/followers(.:format) users#followers
  18. posts_user GET /users/:id/posts(.:format) users#posts
  19. users GET /users(.:format) users#index
  20. POST /users(.:format) users#create
  21. new_user GET /users/new(.:format) users#new
  22. edit_user GET /users/:id/edit(.:format) users#edit
  23. user GET /users/:id(.:format) users#show
  24. PUT /users/:id(.:format) users#update
  25. DELETE /users/:id(.:format) users#destroy
  26. works GET /works(.:format) works#index
  27. POST /works(.:format) works#create
  28. new_work GET /works/new(.:format) works#new
  29. edit_work GET /works/:id/edit(.:format) works#edit
  30. work GET /works/:id(.:format) works#show
  31. PUT /works/:id(.:format) works#update
  32. DELETE /works/:id(.:format) works#destroy
  33. relationships POST /relationships(.:format) relationships#create
  34. relationship DELETE /relationships/:id(.:format) relationships#destroy

解决方法

您需要添加资源:routes.rb文件中的帖子,以便Rails自动为您创建posts_path帮助程序.

添加资源:帖子将生成适当的RESTful路由,供您创建,删除,更新和获取帖子.请查看Ruby on Rails指南以进行路由,特别是路由和RESTful路由上的this section here.

猜你在找的Ruby相关文章