2012-01-20 11 views
10

ImplicitTest adlı bir modelim var. Buna, Rails'de bir çok şeyi kırmak için Test adlı bir Ruby nesnesine sahip olmak deniyor. Bununla birlikte, yine de bunu test (örn. /tests, /test/1/edit vb.) Gibi RESTful kaynağı olarak açığa çıkarmak istiyorum. Dahası, daha az önemli olsa da, denetleyiciyi TestsController olarak tutmak harika olurdu.Kaynak model adı yol veya denetleyici ile eşleşmediğinde yönlendirme nasıl yazılır

(benim routes.rb dosyasında basit resources :tests hattını alarak bu yaptığını, ancak bu sığınakta formlar için başarısız örn <%= form_for @test ... > - Bu @test nesne türü ImplciitTest ait olduğunu alır ve implicit_test_path arama almaya çalıştığı mevcut değil.

seçeneklerim form_for ekleyerek çalıştı, ancak her ikisi de new ve edit eylemler için formu iş var sonucuna vardı, form_for soran kimse tek birleşik yolu yoktu() farklı bir öneki kullanmak yol adı arama için

Bu nedenle, yönlendirme sorununa yaklaşmaya çalışıyorum yan. bana sağlayacak Ben rotalar dosyaya ekleyebileceğiniz bir çizgi var mı:

  1. olarak yolunu/test
  2. Kullanım <% = form_for @test mı
  3. ImplicitTest
  4. adında bir modeli var .. .%> etiketi hala
  5. bunu yapmak Altın Yolu kalkan am biliyorum ama Raylar benim model adı olarak Testi kullanmalarına izin verilmez, ancak bu

(opsiyonel) TestsController olarak kontrolörü tutun kullanıcıların bekleyeceği isim Bu kaynağın URL'sine bakın, bu yüzden bunu sağlayan basit yönlendirme seçenekleri vardır.

cevap

8

Rotanızda :path seçeneği ayarlanır yapmanız gereken:

resources :implicit_tests, :path => '/test' 

Hala standart implicit_tests_path helper bu şekilde kullanmak istiyorsunuz da böylece kod değiştirme sapmak zorunda değildir URL şeması.

resources :tests, :as => "implicit_tests"

bu temelde ekledim ekstra :controller anahtarı verildi aynı şeyi (yapıyor musunuz:

+2

Bu, contoller adını ayarlama gibi görünmüyordu, ancak 'resources: implicit_tests,: controller => "tests" olarak ayarlanıyordu:: path => "tests" 'bunu ekliyor gibiydi. – Phantomwhale

1

coreyward cevabı bakarak iken, ben ihtiyacım olanı almanın daha kısa, ancak daha az sezgisel yönteme rastladım yorumlarda)? Ya da tercih edilen?

+0

Kesinlikle yapabilirsiniz Bu da, Implicit Tests denetleyicisine ve "Rails Way" ile tam olarak uyuşmayan isimlere sahip karışık referanslar kafa karıştırıcı olmaya başlar. – coreyward

+1

Ah tamam, çok düşündüm. Mümkün olduğu kadar raylar yoluna yakın kalmak ve denemek için mutlu, bu yüzden cevabınızla gideceğim. Ayrıca bir ImplicitTestController'a sahip olmak, yönlendirme seçeneklerinin sayısını düşük tutmak ve denetleyici adını model adına yaklaştırmak için geri dönebilir; bu, muhtemelen yol adına daha yakın tutmaktan daha iyidir; esas olarak yukarıda önerdiğiniz şey. – Phantomwhale