私は本質的に単なるコントローラであり、いくつかのビューである超シンプルなアプリを作っています。フォームを送信して別のアクションにリダイレクトする方法を理解できません。ここでモデルなしのレールフォーム
私のコードです:
# app/controllers/wizard_controller.rb
class WizardController < ApplicationController
def calculate
# process data from form here
redirect_to controller: 'wizard', action: 'show'
end
def show
# print processed data here
end
end
これはwizard#calculate
ビューは次のようになります。この時点で
<div class="alert alert-info">
<h2>Get advice on where to live in 3 easy steps!</h2>
</div>
<br/>
<%= form_tag(:controller => "wizard", :action => "calculate") do %>
... form fields ...
<%= submit_tag("Submit") %>
<% end %>
、ちょうど/wizard/calculate
に行くことはありませんので、すぐに/wizard/show
にリダイレクトredirect_to ...
行の前の条件文。
私は基本的にフォームデータを取得して、同じアクションですべてを処理しようとしていました。私はcalculate
をsetup
に分割し、フォームを持つビューとcalculate
に分割してデータを処理し、show
にリダイレクトすることで解決しました。
また、<%= form_tag "/wizard/calculate", method: "get" do %>
はフォームデータを正確に送信するのに役立ちました。
すべての回答をいただきありがとうございます。これは、レールでどのように動作するかを理解するのに役立ちました。
ユーザーが体験したいことを明確にすることはできますか?あなたが計算結果を 'ショー'ページに送る前に見たいと思うように思えます - それは間違いありませんか? –
私はこれがオフポイントであることを認識していますが、実際にはモデルやDBが必要ない場合は特に、Sinatraを使ってはるかに簡単に構築できるアプリのように聞こえます。 –
@KevinBedell、ええ、私は同じ行動で両方をやろうとしていました。それが実現する方法ではないことを認識し、それを2つのアクションに分割して解決策を見つけました。 – Vidur