hello-world.jp.net
webエンジニアのメモ。とりあえずやってみる。

[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使わなくてもいい気がしますね。

もう少しいい感じに整えたいです。

参考


Related #Rails

railsとsinatraの使い分け

sinatraでアプリを作っていたら、色々機能が足りなかったので継ぎ足し継ぎ足しで色々増やしていったら結局railsのようなもの、になってしまいました。

[mysql][rails]Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file

mysql5.1が動いていた環境をmysql5.6にアップデートした後、rake db:createで utf8mb4のDBを作成しようとしたところ以下のエラーが発生

[rails]omniauth-twitterで大きいサイズ(bigger)のプロフィール画像を取得する

ruby2.1, rails4.1.1で確認 omniauth-twitterを使ってtwitter認証を行った際にプロフィール画像を取得したかったのですが、デフォルト設定だと、`auth['info']['image']` に入ってくる画像URLの画像サイズが小さいので、大きい画像を取得するようにしました。

[rails]erbとunderscore.jsを一緒に使ったらundefined local variables in templatesエラーが発生

erbのテンプレート内にunderscore.js用のテンプレートを記述していたら