1

主に CustomerController によってレンダリングされるコンテンツを含む一連のウィジェットを含むページがあります。ただし、顧客のアイテムへの変更に関するビジネス ロジックを処理するために使用される、DigitalItemController と呼ばれる別のコントローラーがあります。POST 経由で DigitalItemController のメソッドによって処理されるファイルをアップロードするために使用されるフォームがあります。フォームは、アップロードした顧客ファイルが含まれているため、: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"}

念のため、ここの ID 番号は明らかに検閲されています。私がする必要があるのは、DigitalItemController のそのメソッドでファイルのアップロードを処理し、パーシャルを再レンダリングして、ウィジェットが正しい最新のデータを表示するようにすることだけです。通常のレンダリングでは問題なくレンダリングされるのに、ファイルが送信されるとすぐにルーティング エラーがスローされるのは奇妙に思えます。

これを修正する方法は何ですか?

4

0 に答える 0