目次

2009年1月27日火曜日

Ruby on Rails チュートリアル(3) 補足:ログアウト機能とeditとnew

チュートリアル(3)ではログアウトメソッドはあったものの、viewに出力していなかったためログアウト出来ない状態でした。また、editとnewも、ログイン名とパスワードを追加して、使えるようにしなくてはなりません。

まずはログアウトを、user/indexから出来るようにします。

view>users>index.rhtml.erbに以下のコードを追加。
<% if @current_user -%>
<%= @current_user.user_name %> さんのアカウント |
<%= link_to 'ログアウト',
{ :controller => '/login', :action => 'logout' },
{ :method => 'post',
:confirm => '本当にログアウトしますか?' } -%>
<% end -%>



新しいユーザーを追加出来るようにnew.rhtml.erbとedit.rhtml.erbの編集。それぞれに以下のコードを追加します。
<p>ログイン名: <%=form.text_field :login_name, :size => 16 %></p>
<p>パスワード: <%=form.password_field :password, :size => 16%></p>


これだけではまだ使えません。models>user.rbを編集。以下のコードを追加。
attr_accessor :password, :password_confirmation
attr_protected :salt, :hashed_password

# パスワードが送られたとき
def password=(pw)
@password = pw
if pw and pw.size > 0
self.salt = rand(100000000)
self.hashed_password = User.hashed_password(pw, self.salt)
end
end


これで完成!


おまけ:
プロジェクト全体のindexページを変えたい場合、つまり「Welcome aboard」ページ以外をトップにしたい場合の話。
まずpublic>index.htmlを削除して、
config>routes.rbに以下のコード追加。
map.root :controller => "users"

これで、http://localhost:3000にアクセスした時、user indexがトップになります。

0 件のコメント: