首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >路由错误没有路由匹配(正确的路由)

路由错误没有路由匹配(正确的路由)
EN

Stack Overflow用户
提问于 2015-01-24 20:29:18
回答 1查看 222关注 0票数 0

我正在构建一个编辑表单。我已填妥表格,并按应有的方式呈现。当我向表单提交更新时,我会得到一个无路由错误。例如,到我的编辑页面的路径是‘/主题/1/书签/1/编辑’。这一页加载得非常好。该页包含将用于编辑记录的窗体的一部分。然而,当我选择submit按钮时,它会重新路由到‘/ the /1/bookmark/1’,并给出以下内容:

代码语言:javascript
复制
Routing Error
No route matches [PATCH] "/topics/1/bookmarks/1"

以下是应该是重要的文件,如果有什么我没有分享,让我知道。这一点很重要。

bookmarks_controller.rb

代码语言:javascript
复制
def edit
  @topic = Topic.find(params[:topic_id])
  @bookmark = Bookmark.find(params[:id])
end

def update
  @topic = Topic.find(params[:topic_id])
  @bookmark = Bookmark.find(params[:id])

  if @bookmark.update_attributes(params.require(:bookmark).permit(:url, :topic_id, :description))
    flash[:notice] = "Bookmark was updated"
    redirect_to [@topic, @bookmark]
  else
    flash[:error] = "There was an error saving the Bookmark.  Please try again."
    render :edit
  end
end

config/scripes.rb

代码语言:javascript
复制
resources :topics do
  resources :bookmarks, only: [:show, :new, :edit]
end

书签/_form.html.erb

代码语言:javascript
复制
<%= form_for [topic, bookmark] do |f|  %>
  <%= f.label :description %>
  <%= f.text_field :description %>
  <%= f.label :url %>
  <%= f.text_field :url %>
  <%= f.submit %>
<% end %>

书签/ed.html.erb

代码语言:javascript
复制
 <%= render partial: 'form', locals: {topic: @topic, bookmark: @bookmark} %>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-24 20:36:54

您没有更新路径,这才是真正更新数据库的方法。只要改变

代码语言:javascript
复制
 resources :bookmarks, only: [:show, :new, :edit] 

代码语言:javascript
复制
resources :bookmarks, only: [:show, :new, :edit, :update]

或者更好,

代码语言:javascript
复制
resources :bookmarks, except: [:index, :create, :destroy] 

如果您有一个新的操作,那么您也应该希望创建一个操作。因此,最后:

代码语言:javascript
复制
resources :bookmarks, except: [:index, :destroy]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28129926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档