没有路线匹配[POST]" / ads / create"

时间:2014-08-07 07:21:37

标签: ruby-on-rails ruby ruby-on-rails-3

Ror rookie。

获取此错误 - >没有路线匹配[POST]" / ads / create"

以下是ads / new.html.erb

的视图
    <%= form_for :ad, url:{action: "create" } do |f| %>

    <p>Name: <%= f.text_field :name %><br /></p>
    <p>Description: <%= f.text_area :description %><br /></p>


     <p><%= f.submit "Create this" %></p>

以下是ads / create.html.erb

的视图
    <h1>Record added</h1>
    <p>Have fun</p>

这是路线文件

      resources :tickets

      get '/ads/new', to: 'ads#new'
      get '/ads/create', to: 'ads#create'
      get '/ads/', to: 'ads#index'
      get '/ads/:id', to: 'ads#show'

控制器

    class AdsController < ApplicationController

     def new
       @ad = Ad.new
     end

    def create
       @ad=Ad.new(params[:ad])
       @ad.save
    end

   def show
       @ad = Ad.find(params[:id])

   end

   def index
    @ads = Ad.find(:all)
   end

   end

我正在使用Rails 4.0.0.rc2和Ruby 1.9.3。急需帮助,无法弄清楚为什么我会一直收到此错误 - &gt;没有路线匹配[POST]&#34; / ads / create&#34;

2 个答案:

答案 0 :(得分:1)

您已创建get路由,但post方法没有任何路由。将其添加到路线文件

post '/ads/', to: 'ads#create'

建议您在路线中遵循RESTful模式。因此,不要使用GET /ads/create,而是拥有&#39; POST / ads /&#39;。 Rails routing guide非常有助于理解rails中的REST。

答案 1 :(得分:0)

你应该:

<%= form_for @ad do |f| %>

在您的观点中:

resources :ads, only: [:new, :create, :show, :index]

在你的routes.rb中使其正常运行,清除轨道。

您收到错误是因为您使用create http方法定义了GET操作的路由(顺便说一句,非常糟糕),但您的表单使用POST方法。