没有路线匹配错误

Posted

技术标签:

【中文标题】没有路线匹配错误【英文标题】:No route matches error 【发布时间】:2016-11-14 03:41:34 【问题描述】:

我正在构建一个 Rails 应用程序,并正在使用 form_for 制作一个表单。我不断收到错误消息,即没有与我指定的路由匹配,但是当我运行 rake 路由时,我看到了我指定的路由(或者至少我认为我这样做了)。有人可以帮忙吗?

我的 form_for 标签是:

<%=form_for @party, :url =>  :action => "update", :controller=>"parties", :method=>"patch"  do |f| %>

在我的派对控制器中,我有:

  def update
    @party.find(params[:id])
    @party.update_attributes

   if @party.save
     redirect_to '/login'
    end
  end

另外,我的派对模式路线如下所示:

【问题讨论】:

试试这个:&lt;%=form_for @party, :url =&gt; :action =&gt; "update", :controller=&gt;"parties", :method=&gt;"patch" do |f| %&gt; 我收到同样的错误信息。如果我尝试“put”而不是“patch!”也是同样的事情! 你能发布错误的完整堆栈跟踪吗? app/views/application/_rsvp.html.erb:5:in _app_views_application__rsvp_html_erb__1942726801474912626_70323230539220' app/controllers/sessions_controller.rb:10:in create' 更改为更新..不是补丁 【参考方案1】:

如果您省略选项,rails 会判断它是否是创建/更新表单。否则,如果您指定选项,则需要使用单独的表单来创建/更新。

<%= form_for @parties do |f| %>
...
<% end %>

【讨论】:

以上是关于没有路线匹配错误的主要内容,如果未能解决你的问题,请参考以下文章

“没有路线匹配”:带有路由轨道命名空间的噩梦

没有路线匹配[POST]“/ projects / 16 / todos / 35 / edit”

Angular 6 组件根据路线变化,错误:选择器“app-navbar”不匹配任何元素

路由错误克隆目录后没有路由匹配 [GET] "/logout"

带有设计的 Rails 3:没有路线匹配 /d/users/sign_out

没有路线匹配 [GET] "/users/sign_out"