device とcarrierwave gem を使用すると、次のエラーが発生します。
undefined method `user_media_index_path'
.Showing .../user_medias/new.html.erb where line #3 raised:
user_media モデルの user_id にインデックスを追加しました
単一モデルのファイルアップロードを正常に実装しましたが、別のモジュールでそれを行う方法がわかりません。
new.html
form_for @media, :html =>{:multipart =>true} do |f|
Upload an Image f.file_field :image
f.submit
end
これは、device gem を使用して生成されたユーザー モデルです。
user.rb
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
has_many :user_media, dependent: :destroy
end
画像などのユーザー メディアを格納するためのモデルです。現在はこれを画像専用に使用していますが、将来はさらに多くの種類のメディアを追加するために、この user_media モデルを作成しました。
user_media.rb
class UserMedia < ActiveRecord::Base
attr_accessible :anudio, :image, :video
belongs_to :user
mount_uploader :image, MediaUploader
end
これは、画像をアップロードするための作成アクションを求められたときにリダイレクトされる場所です
user_medias_controller
class UserMediasController < ApplicationController
def new
@media = UserMedia.new
end
def create
@media=current_user.user_media.build(params[:media])
if @media.save
render'index'
else
render'new'
end
end
end
ルーティングの詳細は次のとおりです。
ルート.rb
Projectx::Application.routes.draw do
get "dashboard/index"
resources :dashboard, :UserMedias
get "home/index"
devise_for :users
root :to => 'home#index'
match 'uploder' =>'UserMedias#new'
@peterによって提案されたリソースを追加した後、rake routesはこれをすべて出力します
dashboard_index GET /dashboard/index(.:format) ダッシュボード#index GET /dashboard(.:format) ダッシュボード#index POST /dashboard(.:format) ダッシュボード#作成 new_dashboard GET /dashboard/new(.:format) ダッシュボード#new edit_dashboard GET /dashboard/:id/edit(.:format) ダッシュボード#edit ダッシュボード GET /dashboard/:id(.:format) ダッシュボード#show PUT /dashboard/:id(.:format) ダッシュボード#更新 削除 /dashboard/:id(.:format) ダッシュボード#破棄 user_medias GET /user_medias(.:format) user_medias#index POST /user_medias(.:format) user_medias#create new_user_media GET /user_medias/new(.:format) user_medias#new edit_user_media GET /user_medias/:id/edit(.:format) user_medias#edit user_media GET /user_medias/:id(.:format) user_medias#show PUT /user_medias/:id(.:format) user_medias#update 削除 /user_medias/:id(.:format) user_medias#destroy home_index GET /home/index(.:format) ホーム#index new_user_session GET /users/sign_in(.:format) devise/sessions#new user_session POST /users/sign_in(.:format) devise/sessions#create destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy user_password POST /users/password(.:format) devise/passwords#create new_user_password GET /users/password/new(.:format) devise/passwords#new edit_user_password GET /users/password/edit(.:format) devise/passwords#edit PUT /users/password(.:format) devise/passwords#update cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel user_registration POST /users(.:format) devise/registrations#create new_user_registration GET /users/sign_up(.:format) devise/registrations#new edit_user_registration GET /users/edit(.:format) デバイス/登録#edit PUT /users(.:format) devise/registrations#update DELETE /users(.:format) devise/registrations#destroy ルート / ホーム#index アップローダー/アップローダー(.:フォーマット) user_medias#new