ruby-on-rails - 路由错误-没有路由匹配[POST] "/posts/new"

标签 ruby-on-rails rails-routing

我正在浏览rubyonrails.org“博客教程”,当我尝试提交“帖子”时遇到此错误:路由错误-没有路由与[POST]“/posts/new”匹配

我将教程中的代码复制并粘贴到了我的代码中。这应该返回带有帖子的文本和标题的哈希,但是相反,我得到了上面的错误。

这是我的看法:

<%= form_for :post, url: posts_path do |f| %>
  <p>
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </p>

  <p>
    <%= f.label :text %><br>
    <%= f.text_area :text %>
  </p>

  <p>
    <%= f.submit %>
  </p>
<% end %>

这是我的 Controller :
class PostsController < ApplicationController
    def new
    end

    def create
        render text: params[:post].inspect
    end
end

这是我的routes.rb:
Blog::Application.routes.draw do
    resources :posts
end

耙路线给出了以下信息:
    posts GET    /posts(.:format)          posts#index
          POST   /posts(.:format)          posts#create
 new_post GET    /posts/new(.:format)      posts#new
edit_post GET    /posts/:id/edit(.:format) posts#edit
     post GET    /posts/:id(.:format)      posts#show
          PUT    /posts/:id(.:format)      posts#update
          DELETE /posts/:id(.:format)      posts#destroy

这是rails的窗口生成的:
Started POST "/posts/new" for 127.0.0.1 at 2013-10-05 21:17:52 -0400

ActionController::RoutingError (No route matches [POST] "/posts/new"):
  actionpack (3.2.13) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.13) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.13) lib/rails/rack/logger.rb:32:in `call_app'
  railties (3.2.13) lib/rails/rack/logger.rb:16:in `block in call'
  activesupport (3.2.13) lib/active_support/tagged_logging.rb:22:in `tagged'
  railties (3.2.13) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.13) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.5) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.13) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.5) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.13) lib/action_dispatch/middleware/static.rb:63:in `call'
  railties (3.2.13) lib/rails/engine.rb:479:in `call'
  railties (3.2.13) lib/rails/application.rb:223:in `call'
  rack (1.4.5) lib/rack/content_length.rb:14:in `call'
  railties (3.2.13) lib/rails/rack/log_tailer.rb:17:in `call'
  rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service'
  C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
  C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
  C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'


  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.13/lib/action_dispatch/middleware/templat
es/rescues/routing_error.erb within rescues/layout (1.0ms)

我尝试遵循verbatum的其他教程也遇到了相同的错误。我想念什么?

谢谢。

最佳答案

我相信您的问题可能与以下内容有关:

<%= form_for :post, url: posts_path do |f| %>

更改为:
<%= form_for @post do |f| %>

我有同样的问题。 /posts/new正在加载,但是当我提交表单时,出现了路由错误。

对于newedit操作,您应该具有相同的形式,即在_form.html.erb文件夹中有一个名为/views/posts的单独文件。

然后,在newedit View 中,您可以通过以下方式引用此表单:
<%= render "form" %>

经过最初的困惑后,这对我有用。

祝你好运!

关于ruby-on-rails - 路由错误-没有路由匹配[POST] "/posts/new",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19204214/

相关文章:

ruby-on-rails - 部署 Rails - 在任何源中都找不到 rake-11.1.2

ruby-on-rails - 如何显示存储在 s3 上而不存储在硬盘上的图像?

ruby-on-rails - 使用对象参数和额外的 id 模拟 POST 请求

ruby-on-rails - 冲突的 Devise 和 restful Controller 路由 | rails 5.2

ruby-on-rails - Rails,如何触摸 has_one 关系中的更新?

ruby-on-rails - 数组存储为字符串。如何将它转换回任何数组?

ruby-on-rails - 无模型的 rails 形式

ruby-on-rails - Rails 3 链接到(:method => :delete) not working

ruby-on-rails-3 - 如何解决这些冲突的 Rails 路由?

ruby-on-rails - form_tag 路由缺少必需的键 : [:id]