2007年10月22日月曜日

collection_selectとユーザ一覧

新規ユーザーの登録でも部署名をプルダウンで選択させたい。

collection_select()
selectのなかでHashかArraysを使う

例:select (:artists, :name, @deadArtists)
は@deadArtistsにある全ての芸術家のドロップダウンリストを生成する。
deadArtistは値が@artists.nameに一致するか、それぞれチェックされる。
一致した場合、その芸術家が選択された状態のドロップダウンが生成される。



[/account_controller.rb]
def signup
@groups = Group.find(:all)
@user = User.new(params[:user])
return unless request.post?
@user.save!
self.current_user = @user
redirect_back_or_default(:controller => '/account', :action => 'list_group')
flash[:notice] = "Thanks for signing up!"
rescue ActiveRecord::RecordInvalid
render :action => 'index'
end



[signup.rhtml]

<label for="group_id">部署</label>
<%= collection_select(:groups, :group_id, @groups) %>





query文
Group Load (0.001989) SELECT * FROM groups



クエリはあっているようだけど

<エラー文> wrong number of arguments (3 for 5)

5個のとこが3個しかないっていわれてる?
だとすれば。。。プルダウンに入る値の設定かな?



<%= collection_select(:groups, :group_id, @groups, :id, :name) %>


<エラー文> undefined method `group_id' for #




そりゃそうだった!groups DBには :id と :name の2項目しかありません。



<%= collection_select(:groups, :id, @groups, :id, :name) %>



おお!ちゃんとプルダウンで部署名が表れました。

新規ユーザー登録してみると・・・(まだgroup_idのDBへの登録は設定してない)
あ。やっぱりどのグループにも登録されてない。
が、登録したユーザーでのログインは出来ました。
とりあえず、ユーザー一覧も作っておこう。・・・としたら、
上で書いている『どのグループにも登録されてない』おかげで
うまいこと表示されず、またまた遠回りをしてしまいましたが、
日に日に「ピン!」と来る回数は増えたのですが、
debugが上手に出来ず小さなミスで右往左往している気がします。

明日は、やりかけた、acts_as_authenticatedとは
で勉強しつつ、
authenticatedに無い新しい項目のDB登録を完成させたいです。

0 件のコメント: