Ruby on rails 自引用模型中的UrlGenerationError

Ruby on rails 自引用模型中的UrlGenerationError,ruby-on-rails,Ruby On Rails,我有一个嵌套对话的自引用Post模型。父帖子使用partials _post和_form呈现子帖子。每个帖子都有“回复”、“编辑”和“删除”的典型crud操作 问题:即使请求中存在id参数,子回复的编辑操作仍会引发“UrlGenerationError缺少必需的键[:id]”错误。然而,删除操作可以很好地工作,所有操作在父帖子中也可以很好地工作 post.rb: has_many :child_posts, class_name: "Post", foreign_key: "parent_po

我有一个嵌套对话的自引用Post模型。父帖子使用partials _post和_form呈现子帖子。每个帖子都有“回复”、“编辑”和“删除”的典型crud操作

问题:即使请求中存在id参数,子回复的编辑操作仍会引发“UrlGenerationError缺少必需的键[:id]”错误。然而,删除操作可以很好地工作,所有操作在父帖子中也可以很好地工作

post.rb:

has_many :child_posts, class_name: "Post", foreign_key: "parent_post_id"
belongs_to :parent_post, class_name: "Post", optional: true
routes.rb:

resources :posts
_post.html.erb:

<%= link_to 'Edit', edit_post_path(post.id), ... %>

_form.html.erb:(错误发生在
标记处。)

“posts”,“action”=>“edit”,“id”=>“123”}允许:false>%
...

很高兴展示更多——这似乎是最相关的。想法?

这是由我与has_permalink gem引入的冲突引起的。(gem按预期工作)

传入参数和表单URL之间没有任何关系。你看错问题了。真正的问题是为什么路由帮助器失败。检查
post
告诉你什么?您是否正在将模型中的
重写为_param
polymorphic\u url(post)
告诉你什么?我猜最有可能的原因只是印刷错误。也许您应该使用实例变量
@post
,而不是局部变量
post
。多态url(post)显示了相同的错误,但这促使我意识到这是由于我与has\u permalink gem引入了冲突,试图同时支持permalinks(用于原始帖子)和id号(用于回复)。显然,我应该想出一个更好的解决办法。
<% puts params.inspect # ->  <ActionController::Parameters {"controller"=>"posts", "action"=>"edit", "id"=>"123"} permitted: false> %> 
<%= form_for post do |f| %>
...