I was creating a scaffolded class on rails and then I tried to access it’s “new” action but i got this error:
NoMethodError in Medias#new
Showing /Users/webcloud/Documents/Trabalhos/Reinaldo/Residencial/gerenciador/rails_estate/app/views/medias/_form.html.erb where line #1 raised:
undefined method `media_index_path' for #<#<Class:0x007fbfdc371bf0>:0x007fbfdc36b6d8>
Extracted source (around line #1):
1: <%= form_for @media, :html => {:multipart => true} do |f| %>
2: <% if @media.errors.any? %>
3: <div id="error_explanation">
4: <h2><%= pluralize(@media.errors.count, "error") %> prohibited this media from being saved:</h2>
Trace of template inclusion: app/views/medias/new.html.erb
Rails.root: /Users/webcloud/Documents/Trabalhos/Reinaldo/Residencial/gerenciador/rails_estate
Application Trace | Framework Trace | Full Trace
app/views/medias/_form.html.erb:1:in `_app_views_medias__form_html_erb___3954857503624418674_70230991238020'
app/views/medias/new.html.erb:3:in `_app_views_medias_new_html_erb__3813674121976191732_70231004981260'
app/controllers/medias_controller.rb:34:in `new'
the weird part is that it have the resource configured:
resources :medias
And it’s model is using the carrierwave gem to manage uploads
class Media < ActiveRecord::Base
has_many :gallery_data
has_many :galleries, :through => :gallery_data
belongs_to :user
belongs_to :category
attr_accessible :file_name, :remote_image_url
mount_uploader :file_name, ImageUploader
end
It’s controller method (new) is just the same as any scaffolded method:
# GET /media/new
# GET /media/new.json
def new
@media = Media.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @media }
end
end
I don’t really know what’s going on here.
See this answer for your solution.
To summarize, ‘media’ is pluralized ‘media’, not ‘medias’ as you have put.
You’ll need to change your
routes.rb(and maybe some other code such as controller class names) in order to correct the problem.