- 2009-05-18 (月) 23:03
- Programming
昨日のハマり、解消!なんか記事かいてたら思いついたよ。
敗因は route.rb で解決しようとしていたことだった。そりゃそうだよな。/users/1/ をget した場合は、users コントローラーの show アクションに :id => 1 が渡され、 /users/daruyanagi の場合は :id => ‘daruyanagi’ が渡される。ならば、users コントローラーの show アクションを処理すればよかっただけの話だった。
# users_controller.rb
def show
@use = nil
case params[:id]
when /\d+/
redirect_to :action => 'show', :id => User.find(params[:id]).login
else
@user = User.find_by_login(params[:id])
end
if @user != nil
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @user }
end
end
end
:id => ‘数字’ の場合は ユーザー名に変換してリダイレクトするようにしてみた。最後の @user == nil の場合の処理は割愛。どうするのが礼儀正しいのかね?
http://localhost:3000/users/daruyanagi/posts でちゃんと、当該ユーザーの投稿一覧も得られるようだ。よっしゃー
あはは…ほんと、屁たれ orz
- Newer: 関西大丈夫かなぁー…
- Older: 光沢や高級感があって、セレブっぽくてきれい。そんなヒトにアナタはなりたい。

