Frage

Ich habe einen Admin-Namespace, die mir die üblichen Routen wie admin_projects und admin_project gibt, aber sie sind nicht in der üblichen Art und Weise verhalten. Dies ist mein erstes Rails 2.3 Projekt so vielleicht im Zusammenhang kann ich keine Informationen über Google finde jedoch.

map.namespace(:admin) do |admin|
  admin.resources :projects
end

Das Merkwürdige für eine bestimmte URL ist (. ZB / admin / Projekte / 1) Ich muss nicht passieren in einem Objekt-URL, um es irgendwie errät sie:

<%= admin_project_path %> # => /admin/projects/1

Keine Sorge, nicht wirklich ein Problem habe gerade bemerkt, das nicht vor.

Aber wenn ich versuche, und ein Objekt übergeben wie üblich:

<%= admin_project_path(@project) %> # => admin_project_url failed to generate from {:controller=>"admin/projects", :action=>"show", :id=>#<Project id: 1, name: "teamc...>

„: id“ scheint das gesamte Objekt zu enthalten, so dass ich versuchen, das Bestehen die id direkt und es funktioniert:

<%= admin_project_path(@project.id) %> # => /admin/projects/1

Das wäre nicht so schlimm, aber wenn es um Formen kommt ich in der Regel verwenden Sie [: admin, @object], aber:

<%= url_for [:admin, @project.id] %> # => undefined method `admin_fixnum_path'

So kann ich nicht in einem id passieren, da es eine Objekt Klasse muss die richtige Route trainieren zu können.

<%= url_for [:admin, @project] %> # => Unfortunately this yields the same error as passing a object to admin_project_path, which is what it is calling.

Ich kann keinen Fehler erkennen und das ist ziemlich Standard so dass ich nicht sicher bin, was schief läuft ...

War es hilfreich?

Lösung

Interessant. Was passiert, wenn Sie eine to_param Methode auf Projekt definieren? Zum Beispiel

class Project < ActiveRecord::Base
  def to_param
    self.id
  end
end

Dies sollte der Standard sein, und dies sollte nicht notwendig sein. Aber was passiert, wenn Sie es explizit zu machen? Versuchen Sie, das obige Verfahren dann zu Ihrem ursprünglichen Ansatz geht zurück von nur etwa @project vorbei

Andere Tipps

Ich wünsche ich Ihnen auf diesem helfen könnte. Wir haben eine große Anwendung mit mehreren Namensraum Abschnitten. Unsere Routen sind in der genauen Methode definieren Sie beschrieben haben, und wir rufen unseren Weg Helfer mit Objekten. Nein, wo in der Anwendung zugreifen wir die ID verwendet wird.

Unsere Anwendung gestartet on Rails 2.1 und hat sich durch 2.2 und 2.3 ohne wesentliche Änderungen an der Routing übergegangen ist. Leider konnte ich nicht mehr helfen.

Peer

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top