gpt4 book ai didi

ruby-on-rails - Ruby on Rails : singular resource and form_for

转载 作者:行者123 更新时间:2023-12-03 05:38:54 26 4
gpt4 key购买 nike

我希望用户仅处理连接到用户 session 的一个订单。所以我为订单设置了单一资源

路线.rb:

resource :order

views/orders/new.html.erb:

<%= form_for @order do |f| %>
...
<% end %>

但是当我打开新订单页面时出现错误:

undefined method `orders_path`

我知道,我可以在 form_for 中设置 :url => order_path,但是解决此冲突的真正方法是什么?

最佳答案

不幸的是,这是a bug 。您必须像您提到的那样设置网址。

= form_for @order, :url => order_path do |f|

请注意,这将正确路由到createupdate,具体取决于@order是否持久。

<小时/>

更新

现在还有另一个选择。您可以将其添加到您的路由配置中:

resolve("Order") { [:order] }

然后,当为 polymorphic_url 方法提供一个类名为“Order”的对象时,它将使用 [:order] 作为 url 组件,而不是调用 model_name .route_keyjskol's answer 中所述.

这有一个限制,即它不能在范围或命名空间内使用。您可以在路由配置的顶层路由命名空间模型:

resolve('Shop::Order') { [:shop, :order] }

但它不会对具有额外组件的路由产生影响,所以

url_for(@order)           # resolves to shop_order_url(@order)
url_for([:admin, @order]) # resolves to admin_shop_orders_url(@order)
# note plural 'orders' ↑
# also, 'shop' is from module name, not `resolve` in the second case

关于ruby-on-rails - Ruby on Rails : singular resource and form_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3736759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com