TodoList: user_edit 画面の改装2006年12月14日 13時34分52秒

以前に、http://localhost:3000/user/edit_user/1 の画面にて、所属を変更できるようにした。そのときは、所属の選択を Email の後にしたかったのだが、First Name の前に出てきてしまっていた。

edit_user のページのソースを見ると、login_engine がどのように入力画面を制御しているのかが分かる。そこで、見ていると table のタグが必要なのが分かった。


% cvs diff views/user/_edit.rhtml
diff -u -r1.2 _edit.rhtml
--- views/user/_edit.rhtml      10 Dec 2006 06:38:45 -0000      1.2
+++ views/user/_edit.rhtml      12 Dec 2006 06:22:19 -0000
@@ -12,9 +12,14 @@
     <%= form_input changeable(user, "login"), "Login ID", "login", :size => 30 %><br/>
     <%= form_input changeable(user, "email"), "Email", "email" %>
 
+   <tr class="two_columns">
+   <td class="prompt"><lable>Organization:</label></td>
+   <td class="value">
     <%= select :organization, :id,
      Organization.find_all().map {|o| [ o.name, o.id ]}, {},
      { :selected => User.find(@params[:id]).organization_id } %>
+   </td>
+   </tr>
 
     <% if submit %>
       <%= form_input :submit_button,
         (user.new_record? ? 'Signup' : 'Change Settings'), :class => 'two_columns' %>

これで、他の入力項目と揃った表示が出来るようになった。

そして、所属を外すことも出来なかった。そこで、:include_blankを追加する。


diff -u -r1.3 _edit.rhtml
--- views/user/_edit.rhtml      13 Dec 2006 05:22:43 -0000      1.3
+++ views/user/_edit.rhtml      13 Dec 2006 05:24:33 -0000
@@ -16,7 +16,8 @@
    <td class="prompt"><lable>Organization:</label></td>
    <td class="value">
     <%= select :organization, :id,
-     Organization.find_all().map {|o| [ o.name, o.id ]}, {},
+     Organization.find_all().map {|o| [ o.name, o.id ]},
+     { :include_blank => true },
      { :selected => User.find(@params[:id]).organization_id } %>
    </td>
    </tr>

所属で空白を選んだときに params に渡される値は "organization"=>{"id"=>""} だった。

前回次回