Rails 3.2.9 にサインアップ フォームがあります。フォームに「login」というログイン名のテキスト フィールドが含まれています。このフィールドの値を使用して、ログイン名の可用性チェック機能のためにデータベースで重複をチェックしたいと考えています。しかし、params[:login] はフォームから値を適切に読み取っていません!! form_for に何か問題がありますか?? または、コントローラーに値を読み取らせるにはどうすればよいでしょうか?
signup.html.erb
<%= form_for :user do |f| -%>
<span class='error'><%= flash[:msg] %></span>
<p><label for="login"><span class='redcolor'>*</span>Login</label><br/>
<%= f.text_field :login %></p>
<p><%= submit_tag 'Check Login Availability', :name => 'check' %></p>
<p><label for="email"><span class='redcolor'>*</span>Email</label><br/>
<%= f.text_field :email %></p>
<p><label for="password"><span class='redcolor'>*</span>Password</label><br/>
<%= f.password_field :password %></p>
<p><label for="password_confirmation"><span class='redcolor'>*</span>Confirm Password</label><br/>
<%= f.password_field :password_confirmation %></p>
<p><label for="company"><span class='redcolor'>*</span>Company</label><br/>
<%= f.text_field :company %></p>
<p><%= submit_tag 'Sign up', :name=> 'sign_up' %></p>
値を読み取るコードは次のようになります
account_controller.rb
if params[:check]
puts "in check"
username = params[:login]
puts username//is giving blank
user = User.find_by_login(username)
if user
flash[:msg] = "Sorry Not Available!"
else
flash[:msg] = "Available"
end
ここでputs username
は空白を指定しているため、常に「使用可能」が表示されます。このようなhtmlページでログインするためにname paramを追加すると<%= f.text_field :login,:name => 'login'%>
、コードは可用性チェック機能で正常に機能しますが、「ログインはnullにできない」というDBエラーが原因でサインアップ機能が失敗します。
tat params[:login] が値を適切に読み取るようにする方法を教えてもらえますか?