[英]Form_for namespaced route for a resource with multiple states
我有一个具有不同状态的Blog
模型。 为了保持控制器的瘦身,并遵循每个控制器仅具有CRUD操作的约定,我遵循DHH的命名空间控制器模式,并命名了Blog
控制器。
现在,我有一个Blogs::NewDraft
控制器,一个Blogs::AwaitingApproval
控制器和一个Blogs::Active
控制器。
我的_form.html.erb
包含以下内容,用于为博客创建新的草稿。 它适用于创建新记录,但不适用于更新现有记录:
# app/views/blogs/new_drafts/_form.html.erb
<%= form_for @blog, url: :blogs_new_drafts do |f| %>
...
<% end %>
当我去更新草稿时,会引发以下错误:
没有匹配的路由[PATCH]“ blogs / new_drafts”
我在弄清楚为什么在这里更新时为什么会说存在路由错误,因为我在运行rake routes
时确实有一个PATCH路由到blogs/new_drafts#update
更改您的URL:
<%= form_for @blog, url: :blogs_new_draft(@blog) do |f| %>
...
<% end %>
您创建操作的网址将与更新不同。 更新操作URL需要知道您要更新哪个博客。
就是说,如果您尝试与new
视图和edit
视图共享_form
,则无法使用单个form
,因为您提供的自定义URL在这两个操作之间会有所不同。 有一些方法可以使它起作用(将URL传递到部分视图中/将URL作为变量实例化在控制器中/将form标签直接添加到新视图/编辑视图中/等),但是需要做一些事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.