[rails]simple_formでモデルを使用しない場合
sns認証機能のあるモックを作っていた際に、最初はsimple_formを用いて以下のようにUser情報を更新するフォームを作成していたのですが、
<%= simple_form_for @user, :url => create_path, :html => { :class => 'form-horizontal' }, :method => :post do |f| %>
<%= f.input :url %>
<%= f.button :submit, :class => 'btn-primary', :value => 'Create' %>
<% end %>
途中で、新規登録時にURLも一緒に入力してSNS認証できるようにしたいと考え、認証済みの場合と未認証の場合でフォームを出し分けることにしました。
その際に、未認証の場合は対象となるuserが存在しないので、simple_formでどうやって指定すればいいのかなと思ったのですが、シンボル(@userの代わりに:userを指定)を使えばできました。
<% if @current_user %>
<%= simple_form_for @user, :url => create_path, :html => { :class => 'form-horizontal' }, :method => :post do |f| %>
<%= f.input :url %>
<%= f.button :submit, :class => 'btn-primary', :value => 'Create' %>
<% end %>
<% else %>
<%= simple_form_for :user, :url => register_path, :html => { :class => 'form-horizontal' }, :method => :post do |f| %>
<%= f.input :url %>
<%= f.button :submit, :class => 'btn-primary', :name => 'twitter', :value => 'Twitter認証' %>
<%= f.button :submit, :class => 'btn-primary', :name => 'facebook', :value => 'Facebook認証' %>
<% end %>
<% end %>
ただこれ、そもそも未認証の場合はsimple_form使わなくてもいい気がしますね。
もう少しいい感じに整えたいです。