さて。サインアップ画面のカスタマイズです。
acts_as_authenticatedで作ってくれるsignup.rhtmlの中は下記のように
書いてあります。
<%= error_messages_for :user %>
<% form_for :user do |f| -%>
<label for="login">name
<%= f.text_field :login %>
で、今回新規登録にもプルダウンで部署を選択できるようにするために
collection_selectで書いたのが、以下。
<label for="group_id">部署
<%= collection_select(:groups, :id, @groups, :id, :name) %>
これでは、:userに放りこまれてません。
頭に「f.」を付ければ良い・・・わけありませんでした。
f.を頭に付けてみると、
<エラー文>undefined method `merge' for :name:Symbol と言われます。
---------------------
signup.rhtmlと_userForm.rhtmlの中身が同じような感じなのがよく分からない。
webブラウザに生成されたhtmlをみてみると、_userForm.rhtmlに書かれている
<!--[form:user]-->
<!-- all custom fields here -->
<label for="group_id">所属グループ
<select id="user_group_id" name="groups[id]">
<option value="1" selected="selected">総務
<option value="2">営業
<option value="3">開発
のコメントが入っている。んーどこからどう調べていったら良いのか・・・
signup.rhtmlの頭に書いてある<% form_for :user do |f| -%>と
_userForm.rhtmlの頭の<!--[form:user]-->
これは、signup.rhtmlも_userForm.rhtmlも:userモデルを・・・なんだろう?
どういう意味なのかな??
*** :userモデル回りに関するformということだそうです ***
---------------------
<%= collection_select(:groups, :id, @groups, :id, :name) %>
ここに大きな間違えが!
<select id="user_group_id" name="groups[id]">
ここにも大きな間違えが起こってました。
<%= collection_select(:user, :group_id, @groups, :id, :name) %>
とすれば
<select id="user_group_id" name="user[group_id]">となって、
新規登録で、DBにも部署名(group_id)が登録できました。
さてさてあと2日・・・
最悪、エラーが出ないようにしたい・・・・汗
やっぱりRubyを一通り勉強しないと、カスタマイズは出来ないなぁ。
■ Ruby on Rails を使ってひとりでサービスを作ってみよう
■ パーミッション(所有権)の変更 linux
■ Module ActionView::Helpers::FormOptionsHelper
0 件のコメント:
コメントを投稿