未定义的方法`upload_path' - ' new' Ruby on Rails中的操作

时间:2016-06-13 03:34:01

标签: ruby-on-rails ruby-on-rails-4

这应该是超级简单的,但我看不出我做错了什么。 “&new;'中的表单上传页面收到错误。

  • '上传'属于'事件'
  • '事件'有很多'上传'
  • routes.rb是(据我所知)正确。
  • 我打算使用Refile将文件上传到S3(根据this教程...不确定这是否相关)

Upload.rb

class Event < ActiveRecord::Base
  has_many :uploads
end

Event.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

uploads_controller.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

Routes.rb

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

views / uploads / new.html.erb(示例)

STARThello how are you doing today?END

当我导航到新的&#39;页面,我收到以下错误:

未定义的方法`upload_path&#39;对于#&lt;#:0x007fb8709229f0&gt;

为什么我无法添加与Event相关联的新上传?我知道我错过了一些非常简单的东西,但是我不能把手指放在它上面。

2 个答案:

答案 0 :(得分:2)

由于uploads嵌套在events中,您可以获得上传路径的网址,如下所示:

/events/1/uploads/new

在这种情况下,您必须在form_for方法中指定@event,如下所示:

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

答案 1 :(得分:0)

或者只是

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