проблема с отображением сообщения об ошибке в форме вложенной модели - PullRequest
1 голос
/ 22 января 2011

У меня проблемы с выяснением того, как отобразить сообщение об ошибке - фактически даже при отображении страницы с ошибкой.

Вот что у меня сейчас есть:

media.rb

class Media < ActiveRecord::Base

  belongs_to :project
  has_attached_file :media_file, :default_url => '/media_file/missing.png'

  validates :description, :presence => true
  validates_attachment_content_type :media_file, :content_type => ['image/gif', 'image/jpg', 'image/jpeg', 'image/png', 'audio/mpeg', 'audio/wav']

  MEDIA_TYPES = ["Image", "Audio", "Video"]
end

_form.html.erb

<%= form_for [@project, @media], :html => {:multipart => true} do |f| %>
  <% if @media.errors.any? %>
    <div id="error_explanation">
     <h2><%= pluralize(@media.errors.count, "error") %> prohibited this media from being saved:</h2>
     <ul>
       <% @media.errors.full_messages.each do |msg| %>
         <li><%= msg %></li>
       <% end %>
     </ul>
    </div>
  <% end %>
. 
.
.
<% end %>

routes.rb

resources :medias, :only => [:destroy, :update]
resources :projects do
  resources :medias, :only => [:create, :edit, :index, :new, :show, :update]
end

medias_controller.rb

def new
  @project = Project.find params[:project_id]
  @media = Media.new(:project=>@project)

  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @media }
  end
end

def create
  @media = Media.new(params[:media])

  @media.project_id = params[:project_id]

  respond_to do |format|
    if @media.save
      format.html { redirect_to(@media.project, :notice => 'Media was successfully created.') }
      format.xml  { render :xml => @media, :status => :created, :location => @media }
    else
      format.html { render :action => "new" }
      format.xml  { render :xml => @media.errors, :status => :unprocessable_entity }
    end
  end
end

def update
  @media = Media.find(params[:id])

  respond_to do |format|
    if @media.update_attributes(params[:media])
      format.html { redirect_to(@media.project, :notice => 'Media was successfully updated.') }
      format.xml  { head :ok }
    else
      format.html { render :action => "edit" }
      format.xml  { render :xml => @media.errors, :status => :unprocessable_entity }
    end
  end
end

В настоящее время проблема заключается в том, что при попытке создать новую media запись для проекта с проблемой проверки возникает следующая ошибка:


ActionController :: RoutingError в Medias # create Отображение D: /test/app/views/medias/new.html.erb, где поднята строка # 5:

Не найдено ни одного маршрута {: action => "destroy",: controller => "projects"}

Извлеченный источник (около строки № 5): 2: 3: <% = сделать 'форму'%> 4: 5: <% = link_to 'Back', project_path (@project)%>


URL-адрес, который он получает для этой ошибки: http://localhost:3000/projects/16/medias (URL-адрес страницы 'new' равен http://localhost:3000/projects/16/medias/new).. возможность «редактировать» существующую запись без проблем, и это включает в себя отображение ошибки проверки, если это необходимо - однако проверка «редактирования» происходит только после того, как я добавил «: обновление» к ресурсам: средам и ресурсам: носителям информации в: проекты. Я не уверен, что это отличная идея.

Любое понимание того, как заставить это работать, очень ценится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...