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