Ich habe versucht, einen separaten Abschnitt meiner App mit einem Unterverzeichnis namens controlpanel einzurichten, um verschiedene Teile der Website zu verwalten.
Ich habe den Namespace in meiner routes.rb eingerichtet
map.namespace :controlpanel do |submap|
submap.resources :pages
# other controllers
end
Und platzieren Sie den Controller und die Views in den entsprechenden Unterverzeichnissen.
Controlpanel::PagesController
def new
@page = Page.new
end
def create
if @page = Page.create_with_author(current_user, params[:page])
flash[:notice] = 'Page was successfully created.'
redirect_to ([:controlpanel, @page])
else
render :action => 'new'
end
end
Anwendung dieser gemischten Methode in der Klasse
def create_with_author(author, params)
created = new(params)
created.author = author
if created.save
created
end
end
Und die Ansicht (controlpanel/pages/new.html.erb rendert einen Teilbereich namens _form
<%= render :partial => 'form' %>
Diese lautet wie folgt:
<% semantic_form_for([:controlpanel, @page]) do |form| %>
<% form.inputs do %>
<%= form.input :title %>
<%= form.input :body %>
<% end %>
<%= form.buttons %>
<% end %>
Wenn ich das Formular korrekt ausfülle, funktioniert es wie erwartet und leitet mich auf die neue Seite um. Wenn ich jedoch Felder leer lasse und damit gegen die Validierungsbedingungen verstoße, erhalte ich die folgende Fehlermeldung:
RuntimeError in Controlpanel/pages#create
Showing app/views/controlpanel/pages/_form.html.erb where line #1 raised:
Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
Kann jemand erkennen, was hier schief läuft?
Ich verwende das formtastic-Plugin, um das Formular zu erstellen, aber es passiert auch, wenn ich ein normales Formular verwende.
Für jeden Ratschlag bin ich sehr dankbar.
Danke.