1

我有一个包含一堆小部件的页面,这些小部件的内容主要由 CustomerController 呈现。但是,还有另一个称为 DigitalItemController 的控制器,用于处理有关客户项目更改的业务逻辑。我有一个表单,用于上传要由 DigitalItemController 中的方法通过 POST 处理的文件。该表单位于名为 :customer_assets 的部分中,因为它包含他们已上传的客户文件。同样的小部件有一个已上传文件的表格,其中包含指向它们的链接。

我遇到的问题是,由于 CustomerController 通常会进行渲染,因此它可以很好地渲染我的部分,没有任何抱怨。但是,当我让用户提交要上传的文件时,它会调用我的 DigitalItemController 中的一个方法,其中最后一行表示要渲染部分。当它到达那条线时,我得到一个 ActionController::RoutingError 因为它试图呈现部分。它不喜欢的行是:

%td= link_to(item_file.storage_info.s3_key,
          url_for(:controller => :data, 
            :action => :get_storage_information_link,
            :digital_item_id => item.digital_item_id, 
            :digital_storage_id => item_file.digital_storage_id))

我认为不会有问题,因为这里明确使用了 DataController。它应该知道我只想像以前一样重新渲染部分。但是,我得到了这个:

No route matches {:digital_storage_id=>#####, :action=>"get_storage_information_link", :digital_item_id=>#######, :controller=>"data"}

显然,这里的身份证号码已被删除,以防万一。我需要做的就是让 DigitalItemController 中的该方法处理文件上传,然后重新渲染部分,以便小部件显示正确和最新的数据。对我来说,它在正常渲染时渲染得很好,但是一旦提交文件,它就会引发路由错误,这对我来说似乎很奇怪。

解决这个问题的方法是什么?

4

0 回答 0