2016-06-13 5 views
1

これは非常にシンプルなはずですが、間違っていることはわかりません。 アップロード用の「新規」ページのフォームにエラーが発生しています。未定義メソッド `upload_path ' - Ruby on Railsの' new 'アクション

  • 'アップロード' は「Eventの
  • 'イベント' に所属する多くの 'アップロード'
  • routes.rbをは(私の知る限り)正しいことがあります。
  • 私は(これは、関連するすべてでしかしであるかどうかわから... thisチュートリアルに従っていない)S3にファイルをアップロードするために整頓を使用して計画してい

Upload.rb

class Upload < ActiveRecord::Base 
    belongs_to :event 
    attachment :upload_file 
end 

Event.rb

class Event < ActiveRecord::Base 
    has_many :uploads 
end 

uploads_controller.rb

class UploadsController < ApplicationController 
    before_action :set_event 

    def new 
    @upload = @event.uploads.create 
    end 


    private 
    def set_event 
     @event = Event.find(params[:event_id]) 
    end 
end 

routes.rbを

Rails.application.routes.draw do 

    devise_for :users 
    root 'pages#home' 

    resources :events do 
    resources :coupons 
    resources :uploads 
    member do 
     post :check 
    end 
    end 

ビュー/アップロード/ new.html.erb(例)私は移動

<%= form_for @upload do |f| %> 
    <%= f.text_field :name %> 
<% end %> 

「新しい」ページ、次のエラーが表示されます:

#<#のための未定義のメソッド `upload_path」:0x007fb8709229f0>

は、なぜ私は、イベントに関連した新しいアップロードを追加することはできませんか?私はスーパーシンプルなものが欠けていることを知っているが、私はそれに私の指を置くことはできません。

答えて

2

eventsにネストされている、あなたは次のようにアップロードパスのURLを取得:

/events/1/uploads/new

この場合、メソッドで@eventを指定する必要があります。

<%= form_for [@event, @upload] do |f| %>

0

てみてください、あなたのコントローラにこれらを追加する(新しいアクションを変更):uploadsとして

def new 
    @upload = @event.uploads.new 
end 

def create 
    @upload = Upload.create(upload_params) 
end 

def upload_params 
    params.require(:upload).permit(:name) 
end 
0

それとも単に

<%= form_for @event.upload do |f| %> <%= f.text_field :name %> <%= f.submit %> <% end%>

関連する問題