2014年07月05日 15:28
# app/views/users/_form.html.erb
# config/routes.rb
# icon_user GET /users/:id/icon(.:format) users#icon
resources :users do
member { get :icon }
end
# app/controllers/users_controller.rb
before_action :set_user, only: [:show, :edit, :update, :destroy, :icon] # :icon を追加
def create
@user = User.new(user_params)
@user.icon = params[:user][:icon].read # 画像取得
@user.icon_type = params[:user][:icon].content_type # 画像形式取得
# 省略
end
def icon # 画像表示用のアクション
send_data(@user.icon, type: @user.icon_type, disposition: :inline)
end
private
def user_params
params.require(:user).permit(:name) # :icon, :icon_type を削除
end
# app/views/users/{index,show}.html.erb
image_tag icon_user_path(user) # indexは、@users.eachの中のインスタンス変数
image_tag icon_user_path(@user) # showは、インスタンス変数を利用