неопределенный метод на рельсах 3 леса "новое" действие - PullRequest
0 голосов
/ 31 декабря 2011

Я создавал класс scaffolded на рельсах, а затем попытался получить доступ к его «новому» действию, но я получил эту ошибку:

 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'

странная часть в том, что у него настроен ресурс:

 resources :medias

И его модель использует самоцвет для несущей на носителе для управления загрузкой

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

Этот метод контроллера (новый) такой же, как и любой метод с каркасом:

  # 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

Я действительно не знаю, что здесь происходит.

1 Ответ

0 голосов
/ 31 декабря 2011

См. этот ответ для вашего решения.

Подводя итог, можно сказать, что 'media' - это множественное число 'media', а не 'medias', как вы указали.

$ rails console
> 'media'.pluralize
 => "media"

Вам нужно будет изменить routes.rb (и, возможно, какой-нибудь другой код, например имена классов контроллеров), чтобы исправить проблему.

...