【问题标题】:Nested Routing Error in RailsRails 中的嵌套路由错误
【发布时间】:2015-07-28 16:22:02
【问题描述】:

我不断收到此错误,但不知道如何修复它。请帮忙。

我想在我的销售历史页面上有一个“完成订单”按钮,它会创建一个发布操作来开始转移

orders/sales.html.erb

<% @orders.each do |order| %>
    <tr>
      <td class="center"><%= order.profile.user.first_name %></td>
      <td class="center"><%= number_to_currency(order.profile.price) %></td>
      <td class="center"><%= order.buyer.first_name %></td>
      <td class="center"><%= order.created_at.strftime("%B %-d, %Y") %></td>
      <td class="center"><%= button_to "complete order", complete_purchase_profile_order_path(@order, @profile) %></td>
    </tr>
  <% end %>

routes.rb

resources :profiles do
  resources :orders do
    post 'complete_purchase', on: :member
  end
end

post 'complete_purchase/:id' => "orders#complete_purchase"

orders_controller.rb

def complete_purchase
  @order = Order.find(params[:id])
end

搜索路线

complete_purchase_profile_order POST     /profiles/:profile_id/orders/:id/complete_purchase(.:format) orders#complete_purchase

POST     /complete_purchase/:id(.:format)                             orders#complete_purchase

【问题讨论】:

  • 写出你收到的完整错误信息

标签: ruby-on-rails ruby ruby-on-rails-4 routes controllers


【解决方案1】:

好吧,首先我认为您的链接“complete_purchase_profile_order_path(@order, @profile)”有误。它应该是“complete_purchase_profile_order_path(@profile, @order)”,接下来我想知道您的 orders_controller 是否有“profiles”命名空间。为什么在路由文件中指定两个“complete_purchase”路径?正如 Cyzanfar 所说,请粘贴完整的错误消息以及有关名称空间或文件树的更多详细信息。

【讨论】:

  • 我想通了,但意识到我犯了一个巨大的新手错误。我真的很想为已完成的订单创建转移。我不需要将它添加到嵌套资源中。我需要做的就是创建一个像这样的发布操作 --post '/complete_purchase/:id' => "orders#complete_purchase", as: :complete_purchase-- 然后在我的销售页面中列出所有销售用途-- -- 所以我真的把它弄得比我不得不做的更复杂,但是直到阅读你的答案和评论我才想到@cyzanfar
  • 嗯,有时我们只是想太多了 :) 很高兴你解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多