2016-03-25 10 views
0

Daha önce geliştirdiğim ama bu sefer ne yanlış yaptığımı anlayamadım. İlgili sorular da açıklamıyor. i Üye Ol bağlantısını tıklayın en kısa sürede hat sayısındaActionController :: Unknown içinde Devise :: RegistrationsController # new. ".user" URL'sine eklenmiş

ActionController::UnknownFormat in Devise::RegistrationsController#new 

şöyle ı

<%= link_to "Sign up", new_user_registration_path(resource_name) %> 

için benim linki değiştirirseniz, ben, 207

(options.delete(:responder) || self.class.responder).call(self, resources, options) 
    else 
207: raise ActionController::UnknownFormat 
    end 
end 

Ancak hata alıyorum

<%= link_to "Sign up", new_user_registration_path %> 

Kayıt sayfası yüklemeleri sadece iyi. Unutulmaması gereken bir başka nokta da, kayıt bağlantım tıklandığında, URL'imin http://localhost:3000/users/sign_up.user'a benzediği ve bu durumda olması gereken http://localhost:3000/users/sign_up gibi görünmeyeceğidir.

Rails 4 Devise 3.1.1 ActionController::UnknownFormat in Devise::RegistrationsController#new'dan bahsetmiştim ve resource_name'ı kaldırmayı düşündüm ve işe yaradığı anlaşılıyor. Ancak, nedenini anlayamıyorum. Prensip

cevap

0

new_user_registration_path gibi bir yol yöntemine bir kaynak ilettiğinizde, Raylar bu kaynak için eylemi yönlendirmeyi ve rotaya enterpolasyon yapmayı deneyecektir. Bunun için tanımlanmış kaynak için bir eşleştiriciye sahip bir rotanız olmadığı için, Rails bunun yerine URL'nin sonuna .<resource.to_param> ekleyecektir. Tabii ki, istediğin şey bu değil, çünkü kaydolmanın bir kaynak alması gerekmiyor.

Bu özel durumu almanızın nedeni, devise'nin birden çok yanıt türüne (html, json, xml vb.) Yanıt vermeye çalışmasıdır. Bu, almak istediğiniz tür olarak ayrıştırıcı .user, dolayısıyla bilinmeyen biçimdir hata.

+0

Bunu anlamıyorum. Benim new_user_registration_path kayda/yeniye işaret ediyor, o zaman neden yolla eşleşmiyordu. – Aakanksha

+0

Oldu, ancak var olmayan '.user' yanıt biçimine yanıt vermeye çalıştı. 'resource_name.to_param',' user' dir, bu yüzden – tpbowden

+0

URL'sine eklenmiştir. kinda anlamlıdır, fakat uygulamaların source_name.to_param almadığından nasıl emin olabilirim? Bu kadar aptalca soruları sorduğum için üzgünüm ama lütfen benimle kal, ben – Aakanksha

İlgili konular