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;
答案 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
方法。