在导轨上的红宝石中找不到订单

时间:2019-07-18 12:56:13

标签: ruby-on-rails ruby ruby-on-rails-3

我正在尝试构建一个页面以加载订单ID,但该页面又退回Couldn't find Order,您能帮忙吗?

routes.rb get '/orders/cancellation', to: 'orders#cancel'

<h1>Preview & Cancel your order here</h1>
<div class="block">

  <h1> Order <%= @order.name %></h1>

  <div id="multiple-file-preview">
    <ul id="sortable">
      <div class="clear-both"></div>
    </ul>
  </div>
</div>
def cancel
    paginate_versions PaperTrail::Version.where(order_id: order.id).order(created_at: :desc)
    remote_versions_pagination
  end
def order
    @order ||= Order.find_by!(shopify_id: params[:id])
  end

2 个答案:

答案 0 :(得分:0)

这可能是由于cancellation被用作订单ID。您可以在表演动作中使用调试器对其进行验证。

如果是这种情况,那么您需要以以下方式修改路由文件:订单/取消位于orders /:id之前,即,显示操作作为rails将尝试以上下方式匹配该路线,并且该请求将被分派到第一个匹配的路由。

答案 1 :(得分:-1)

您应该在该特定控制器操作中定义实例变量。 它将解决这个问题

def cancel
@order ||= Order.find_by!(shopify_id: params[:id]) # Whatever you need to assign.. just make sure we have @order here pints to some order record
paginate_versions PaperTrail::Version.where(order_id:order.id).order(created_at: :desc)
remote_versions_pagination
end