単純なルビー画面で計算をしようとしています。楽しみのために、ユーザーがメートルをフィートに変換できるフォームを作成したいと思います。もちろん、値をデータベースに保存したくありません。また、このためだけにテーブルを作成したくありません。
だから私の質問..コントローラーに関連付けられた単一のテキストフィールドを作成するにはどうすればよいですか。ボタン付き。
単純なルビー画面で計算をしようとしています。楽しみのために、ユーザーがメートルをフィートに変換できるフォームを作成したいと思います。もちろん、値をデータベースに保存したくありません。また、このためだけにテーブルを作成したくありません。
だから私の質問..コントローラーに関連付けられた単一のテキストフィールドを作成するにはどうすればよいですか。ボタン付き。
これは、2つの数字を追加するフォームを作成する非常に簡単な例です。
rails new math_app -O
cd math_app
rails generate controller Add form result
最後の行は、2つのアクションを持つコントローラーを生成します-
別のコマンドプロンプトウィンドウで、「math_app」ディレクトリを開き、サーバーを起動します。
rails server
ブラウザを開いて「localhost:3000 / add / form」および「localhost:3000 / add / result」に移動すると、Railsが生成したデフォルトのページが表示されます。以下のものを編集するときに、これらのページに再度アクセスして(サーバーを再起動する必要さえありません)、それらが何を生成するかを確認できます。
'app \ views \ add \ form.html.erb'を編集して、表示するフォームを作成します。
<%= form_tag add_result_path do %>
<%= number_field_tag :first %>
+
<%= number_field_tag :second %>
<%= submit_tag "add" %>
<% end %>
'config / routers.rb'を編集して、'result'アクションが上記のフォームからPOSTリクエストを受け取るようにします。
変化 -
get "add/result"
に-
post "add/result"
'app \ controllers \ add_controller.rb'結果メソッドを編集して、フォームデータから2つの数値を取得し、それらを足し合わせます。
def result
@first = params[:first].to_i
@second = params[:second].to_i
@result = @first + @second
end
'app \ views \ add \ result.html.erb'を編集して、結果を表示します。
<%= @first %> + <%= @second %> = <%= @result %>
<br/>
<%= link_to 'back', add_form_path %>
終わり!
form_taghttp://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tagを確認してください
RubyonRailsはMVCイデオロギーを多用しています。ただし、すべてをデータベースに保存する必要はありません。form_tagを使用すると、モデルに関連付けずにHTMLフォームを作成できます。