fog gemのinstall時に気をつけること
railsアプリケーションをbundle installしたら以下のようなメッセージが出た
------------------------------ Thank you for installing fog! IMPORTANT NOTICE: If there's a metagem available for your cloud provider, e.g. `fog-aws`, you should be using it instead of requiring the full fog collection to avoid unnecessary dependencies. 'fog' should be required explicitly only if: - The provider you use doesn't yet have a metagem available. - You require Ruby 1.9.3 support. ------------------------------
クラウドサービスを利用するためのライブラリfogについてのメッセージ
クラウドプロパイダーのmetagemがある場合は不要な依存関係を避けるべくそちらを使えという内容
※クラウドプロパイダーのmetagemがない場合やruby1.9.3をサポートする場合はその限りでない
自分の場合はawsを使っているので
gem 'fog' ↓ gem 'fog-aws'
また、CarrierWave使ってる場合は
config.fog_provider = 'fog-aws'
を入れないとエラーになるかもです
Railsで登録の際に確認画面を挟むベスト・プラクティス
Railsで登録する際に確認画面を挟む実装って割りとよくありそうだし、実際自分でもやったことがあるけどイマイチ設計でしっくりきていなかった。また、ネットで出てくるそれ系の情報も微妙なものが多い気がする。そんな中、最近業務で作ったやつは他の人にFBもらいつつ良い感じにできたのではと思えたので共有する。
サンプルとしてユーザーの投稿画面があるとする
このときpostする先をconfirmとかにする
post :confirm
バリデーションは確認画面に遷移する前にしときたい
def confirm @user = User.new(user_params) return if @user.valid? render :new end
確認画面はこんな感じ
確認画面なので間違っていたら前の画面に戻りたいし
入力した値はフォームにセットされている状態が望ましい
なのでhiddenで値を持っといてpostして戻るようにする
<%= form_for :user, url: new_users_path do |f| %> <%= f.hidden_field :name %> <%= f.hidden_field :email %> <%= f.hidden_field :sex %> <%= f.submit '入力画面へ戻る'%> <% end %>
backメソッドで入力画面を呼び出す
def back @user = User.new(user_params) render :new end
入力画面に戻った際のurlは users/back でなく users/newでありたい
なのでroutingを設定
post :new, path: :new, as: :new, action: :back
createとpathメソッド名がかぶって上手く動作しなくなるのでpathとasオプションを使う
確認あとの登録もhiddenから値を渡すようにする
<%= form_for :user, url: users_path do |f| %> <%= f.hidden_field :name %> <%= f.hidden_field :email %> <%= f.hidden_field :sex %> <%= f.submit '登録する'%> <% end %>
def create User.create!(user_params) render :complete end
以上、変なとこあればFBください。
サンプルコードはこちら
github.com