Ruby on rails 3 Rails:没有与[PUT]匹配的路由/博客/2“;
我正在rails中创建博客应用程序。我有一个创建和更新博客的通用表单 这是edit和new.html.erb的视图Ruby on rails 3 Rails:没有与[PUT]匹配的路由/博客/2“;,ruby-on-rails-3,form-for,Ruby On Rails 3,Form For,我正在rails中创建博客应用程序。我有一个创建和更新博客的通用表单 这是edit和new.html.erb的视图 <%= render :partial => "form"%> 当我从“编辑”视图打开表单并单击“更新”按钮时,它会抛出错误: No route matches [PUT] "/blog/2" My routes.rb是: resources :blogs get 'blog', to: 'blogs#index' get '/blog/:id',
<%= render :partial => "form"%>
当我从“编辑”视图打开表单并单击“更新”按钮时,它会抛出错误:
No route matches [PUT] "/blog/2"
My routes.rb是:
resources :blogs
get 'blog', to: 'blogs#index'
get '/blog/:id', to: 'blogs#show', as: 'blog'
我不知道哪里出了问题。我尝试在表单中添加“url:blogs\u path”,它会删除错误,但不会保存编辑更改
谁能帮我看看哪里出了问题
谢谢。好的。我不明白你为什么要违反惯例。无论如何,如果是更新操作,使用资源的
form_
将自动生成操作URL作为放置到/resources/:id
所以要覆盖这个,你需要做两件事
put'blog/:id'=>'blogs#update',:as=>'update#blog'
重要的是,你把这一行放在你的“资源:博客”呼叫之上
二,。指定表单应提交到的URL:
您将需要像下面这样创建表单标记:
update_blog_path(@blog)do | f |%>
试试这个,让我们知道。发布您的路线。rb文件我建议您阅读。在控制台中运行
rake routes
时,检查是否有“PUT/blog/:id=>blog#update”路由。如果您遵循约定,url实际上应该是blogs/:id
。你自己写过自定义的REST路由吗???@aromero用博客的路由更新了问题。嘿,它正在进行更新操作,但由于我有用于编辑和新建的通用表单,表单无法创建新博客。它给出错误“没有路由匹配{:controller=>”blogs“,:action=>”update“…”,创建新博客时。这是在表单中更新url路径的原因。违背DRY原则,为new创建一个单独的表单。哦,这是唯一的方法吗?ohk,可以这样做。感谢解决方案:-)这不是唯一的方法:)您可以覆盖您的post调用以符合您的喜好,而不必创建单独的表单。如果您愿意,请尝试。B但是,如果你坐下来思考,你将面临一些可以轻松跨越的障碍。:)这是你的选择。只需按照你在更新方面所做的做。:post'/blog'=>“blogs”#create'
。删除:as helper,因为你无法使用它。现在在helper表单中使用URL as'/blog'+/:id'
(如果您有id…,则必须使用条件语句来执行此操作)。开始尝试。
No route matches [PUT] "/blog/2"
resources :blogs
get 'blog', to: 'blogs#index'
get '/blog/:id', to: 'blogs#show', as: 'blog'