質問: railsの勉強をしております。 勉強の一環として、ユーザーが数値を入力し、計算というボタンを押したら、別ページに数値を3倍にした結果を表示する。という事をやろうとしておりますが、上手く組めません。 大変恐縮ですが、ルートとviews,controllerのサンプルプログラムを教えていただけませんでしょうか? どうしても正解が知りたくてよろしくお願いいたします。
回答: 順番に考えて作ってみると良いかと思います。 1.数値を入力するページを表示する 2.「計算」ボタンをクリックした時に呼び出される処理を考える 3.結果を表示する データの永続化がないので、モデルは必要ないですよね。 となれば、コントローラとビューだけで行けそうです。 コントローラのアクションは、1.の所と2.の所、 必要なビューは1.の所と3.の結果表示の所 コントローラの1.のアクションは、ビューを呼び出すだけなので、中身は空で良くて、 2.のアクションの結果を元に、3.のビューを呼び出せばいいので、 1コントローラに2アクション、2ビューで行けそうです。 適当なコントローラを作って、アクションを二つ追加してあげます ``` class 適当なController < ApplicationController def 最初のフォーム呼び出しアクション end def 計算をするアクション # フォームの結果を受け取って、3倍にして、それをインスタンス変数に格納 @計算結果 = params[:ユーザーが入力した数値].to_f*3 end end ``` ビューもアクションから呼び出される二つのファイルを規定の所に配置すればOKです ``` # /app/views/適当な/最初のフォーム呼び出しアクション.html.erb <%= form_tag 適当なControllerの計算をするアクションのパス do %> <%= text_field_tag "ユーザーが入力した数値" %> <%= submit_tag "計算" %> <% end %> # /app/views/適当な/計算をするアクション.html.erb <%= @計算結果 %> ``` ここまで来れば、routesには上記の二つのパスを登録しておけばOKです ``` get "適当なコントローラの最初に呼び出すアクション", to "適当な#最初の呼び出しアクション" post "適当なコントローラで入力された値を計算して表示するアクション", to "適当な#計算をするアクション" ``` これでばっちり行けるはずです!