سؤال

ولدي مساحة الاسم المشرف الذي يعطيني الطرق المعتادة مثل admin_projects وadmin_project، إلا أنهم لا يتصرفون بالطريقة المعتادة. وهذا هو أول مشروع لي القضبان 2،3 بحيث المتعلقة ربما لا أستطيع أن أجد أي معلومات عن طريق جوجل ولكن.

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

والشيء الغريب هو لURL معين (. على سبيل المثال / المشرف / مشاريع / 1) لا يجب أن تمر في كائن للحصول على URL أنه التخمينات لهم بطريقة أو بأخرى:

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

لا تقلق، وليس حقا مشكلة ليس فقط لاحظت هذا من قبل.

ولكن إذا حاولت وتمرير كائن كما هو معتاد:

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

و": معرف" يبدو لاحتواء الكائن بأكمله، لذلك أحاول تمرير معرف مباشرة ويعمل:

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

وهذا لن يكون سيئا للغاية ولكن عندما يتعلق الأمر أشكال وعادة ما تستخدم [: المشرف،object]، ولكن:

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

ولذا لا يمكن أن تمر في الهوية، كما انها تحتاج الى فئة الأشياء للعمل على الطريق الصحيح لاستخدامه.

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

وأنا لا يمكن اكتشاف أي أخطاء، وهذا هو المعيار جميلة جدا وأنا لست متأكدا ما يجري خاطئ ...

هل كانت مفيدة؟

المحلول

ومثيرة للاهتمام. ماذا يحدث عند تعريف طريقة to_param على مشروع؟ على سبيل المثال

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

وهذا يجب أن يكون الافتراضي وهذا سوفت لا يكون ضروريا. ولكن ماذا يحدث إذا كنت جعلها صريحة؟ حاول إضافة الأسلوب أعلاه ثم تعود إلى النهج الأصلي تمرير فقط حولproject

نصائح أخرى

وأتمنى أن تساعدك على هذه الخطوة. لدينا تطبيق كبير مع عدة أقسام namespaced. وتعرف الطرق لدينا في الطريقة المحددة التي وصفتها ونحن ندعو لدينا مساعد المسار مع الكائنات. لا مكان في تطبيق نحن الوصول باستخدام معرف.

بدأ

وطلبنا على القضبان 2،1 وانتقلت من خلال 2.2 و 2.3 مع عدم وجود تغييرات كبيرة في التوجيه. عذرا أنا لا يمكن أن يكون مزيد من المساعدة.

والأقران

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top