0

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
4

1 に答える 1

2

エラーは、ルートファイルにルートがないことを示しています。これをルートに追加します

resources :user_medias
于 2013-02-08T08:39:57.393 に答える