我正在尝试一个基本的Rails应用程序,我的应用程序不断给我一个错误,上面写着:
No route matches [POST] "/slides/new"
我无法弄清楚如何让这个工作。这是我想要实现的表单:
<%= form_for :slide do |f| %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :picture %><br>
<%= f.file_field :picture %>
</p>
<p>
<%= f.label :user %><br>
<%= f.text_field :user %><br>
</p>
<p>
<%= f.submit %>
</p>
<%end%>
为了更好的衡量,这是我的路线文件:
Rails.application.routes.draw do
get 'welcome/index'
resources :slides
resources :entries
root 'welcome#index'
end
我已经尝试按照教程的步骤做一些不同的事情,但是在尝试将我学到的东西应用到不同的应用程序的某个地方,我一定错过了一些东西,但我无法弄清楚它会是什么。任何见解都会非常感激。
答案 0 :(得分:0)
只是一个猜测,但你可能想要
form_for @slide do |f|
而不是
form_for :slide do |f|
前者将为实例对象生成路由,而后者则尝试为符号生成路由(不确定预期的行为是什么)。
为实例对象生成时,form_for
会检查它是否为new_record?
。如果是,则为/create
创建路线。如果不是,则会转到/update
。无论哪种方式,POST
到/new
都没有多大意义,因为/new
通常是GET
请求。
答案 1 :(得分:0)
由于某种原因,form_for帮助程序无法为:幻灯片符号创建正确的路径。您可以手动指定路径:
<%= form_for :slide, url: {controller: "slides", action: "create"} do |f| %>
或者使用@slide实例变量(您应该在控制器中分配此变量)而不是:幻灯片符号