質問: App.find(params[:id])** send_data file.data, disposition: :inline, type:'file/zip' end end ### 補足情報(FW/ツールのバージョンなど rails ver5.2.3 ruby 2.6.3p62 cloud9での開発をしています。railsを学習し始めて3か月程度の未熟者です。。。 できればrouteの書き方を特に教えていただけると嬉しいです。
回答: ``` <%= button_to 'download','/' %> ``` このボタンを押したときのアクションを用意したものに修正すればよさそうですね。 この状態では、ルートパスに対してPOSTのリクエストが走ります。 やりたいことは、 * applodes コントローラーの * get_file アクションに対して * idのパラメータを載せて * get リクエストする だと思うので、 の回答にあるようにcontroller、action、id: @applode.idを指定してあげてはどうでしょうか? ちなみにですが、以下のURLで定義されいているルーティングを確認することができます。 http://あなたのホスト/rails/info/routes Railsのデフォルトだと http://localhost:3000/rails/info/routes ですね。 ここを見ていただくと、applodesに関するルーティングの一覧が出ているはずです。 また、この部分は同じURLに対して2つのアクションが紐付いているため先に書いたほうが優先されます。 ``` get 'applodes/:id/show' , to:'applodes#show' get 'applodes/:id/show', to: 'applodes#get_file' ``` 見た感じ、resources :applodes だけで足りそうな気はします。 resourcesを指定したときのルーティングは を参照して勉強してみてください。