#目的
データベースを用いずに、フォームの内容を保存する。
#方法
まずは viewファイルにフォームを用意します。
<%= form_for(:data, url: fluit_path) do |f| %>
<%= f.label :"好きな果物" %>
<%= f.text_field :fluit, class: 'form-control' %>
<%= f.check_box :check %> 林檎を食べたことがある。
<%= f.label :"好きな果物(セレクト)" %>
<%= f.select :select, ["葡萄","蜜柑","檸檬"] %>
<%= f.submit "保存", class: "btn btn-success" %>
<% end %>
form_for
を用いて任意のアクションに :data
を飛ばします。
def fluit
cookies.permanent[:fluit] = params[:data][:fluit]
cookies.permanent[:check] = params[:data][:check]
cookies.permanent[:select] = params[:data][:select]
...
end
任意のアクションで :data
を受け取り、cookies
に格納します。
ここではほぼ永続の .permanent
でクッキーを生成していますが、自分で期限を設定することもできます。
参考:Rails チュートリアル | 9.1.2 ログイン状態の保持
あとはフォームでクッキーの値を受け取るだけです。
<%= form_for(:data, url: fluit_path) do |f| %>
<%= f.label :"好きな果物" %>
<%= f.text_field :fluit, class: 'form-control', value: cookies[:fluit] %>
<%= f.check_box :check, checked: ischeck(cookies[:check]) %> 林檎を食べたことがある。
<%= f.label :"好きな果物(セレクト)" %>
<%= f.select :select, ["葡萄","蜜柑","檸檬"], :selected => cookies[:select] %>
<%= f.submit "保存", class: "btn btn-success" %>
<% end %>
テキストフォームは単純に value: cookies[:fluit]
で受け取るだけで、セレクトボックスもだいたいそんな感じです。
チェックボックスは checked:
に true
か false
を渡す必要があるので少々工夫が必要です。
cookies[:check]
の値は 0
か 1
になっています。
def ischeck(x)
x == "1" ? true : false
end
今回はヘルパーに三項演算子を使ったメソッドを書いて、それで補完しました。
これにて完成です。