首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有单一资源的多态urls

具有单一资源的多态urls
EN

Stack Overflow用户
提问于 2011-03-11 14:50:15
回答 1查看 825关注 0票数 3

当我使用以下路由设置时,我得到了奇怪的输出:

代码语言:javascript
复制
  resources :warranty_types do
    resources :decisions
  end
  resource :warranty_review, :only => [] do
    resources :decisions
  end

我有许多warranty_types,但只有一个warranty_review (因此是单数路由声明)。这些决策与两者都是多态关联的。我只有一个decisions控制器和一个_form.html.haml partial来呈现决策表单。

这是视图代码:

代码语言:javascript
复制
= simple_form_for @decision, :url => [@decision_tree_owner, @decision.becomes(Decision)] do |form|

warranty_type url如下所示(用于新决策):

代码语言:javascript
复制
/warranty_types/2/decisions

而warranty_review url如下所示:

代码语言:javascript
复制
/admin/warranty_review/decisions.1

我认为因为warranty_review id无处可去,所以它只是作为一个扩展附加到末尾。

有人能解释一下这是怎么回事吗?我怎么才能修复它呢?

我可以通过尝试检测warranty_review类并用:warranty_review替换@decision_tree_owner来解决这个问题,这会生成正确的url,但这很麻烦。我本以为路由足够智能,可以意识到warranty_review是一个单一的资源,因此丢弃了URL中的id。

顺便说一下,这是Rails 3 :)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-12 06:01:09

显然,这是一个长期存在的rails错误,polymorphic_url无法从路由设置中知道资源是否是单一的:

https://rails.lighthouseapp.com/projects/8994/tickets/4077-wrong-redirect-after-creation-of-nested-singleton-resource-using-responder

即使只有一个warranty_review,我也会使用非单一的路由。这只是一天结束时的美学。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5269867

复制
相关文章

相似问题

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