2 Stimmen

Ruby on Rails -Problem mit Unterverzeichnissen

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.

2voto

Leventix Punkte 3749

Angesichts der Tatsache, dass die erstellen. Aktion aufgerufen wird und neu wiedergegeben wird, Page.create muss den Wert Null haben.

Sie möchten wahrscheinlich die params[:page] à erstellen. .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X