2013-10-05 2 views
7

Ich arbeite an einer Rails 4 App mit Devise 3.1.1 für die Benutzerauthentifizierung. Wenn ich auf /users/sign_up.user Link Rails Würfen folgende Ausnahme:Rails 4 Devise 3.1.1 ActionController :: UnknownFormat in Devise :: RegistrationsController # Neu

ActionController::UnknownFormat in Devise::RegistrationsController#new 
ActionController::UnknownFormat 

Rails.root: /home/rehan/odesk_work/kiefer-waight/ujoin/ujoin-www 

Application Trace | Framework Trace | Full Trace 
actionpack (4.0.0) lib/action_controller/metal/mime_responds.rb:372:in `retrieve_collector_from_mimes' 
actionpack (4.0.0) lib/action_controller/metal/mime_responds.rb:327:in `respond_with' 
devise (3.1.1) app/controllers/devise/registrations_controller.rb:8:in `new' 
actionpack (4.0.0) lib/action_controller/metal/implicit_render.rb:4:in `send_action' 
actionpack (4.0.0) lib/abstract_controller/base.rb:189:in `process_action' 
actionpack (4.0.0) lib/action_controller/metal/rendering.rb:10:in `process_action' 
actionpack (4.0.0) lib/abstract_controller/callbacks.rb:18:in `block in process_action' 
activesupport (4.0.0) lib/active_support/callbacks.rb:413:in `_run__890637270__process_action__callbacks' 
.... 

Ich war eigentlich auf 3.0.0.rc Devise, wenn die App gestartet wird, dachte ich, die devise 3.1.1 Upgrade könnte die Lösung Problem, aber es hat nicht. Konnte nichts nützliches auf SO/google/devise github Projekt finden. Irgendeine Idee, wie man es umgehen kann. Vielen Dank!

Antwort

13

Ich wollte nicht Standard-Links von Devise erzeugt, die ".user" am Ende jedes Links angehängt. Ersinnen hergestellt folgende Verbindungen:

new_user_registration_path(resource_name) new_user_session_path(resource_name) new_user_password_path(resource_name)

resource_name, der Benutzer ist, als Parameter an den Pfad in link_to Methode, die es sagt der Verwendung von ".user" als Format. Also habe ich resource_name von jedem Pfad entfernt. Ich frage mich, warum Devise das tut!

+0

Ich weiß auch nicht, warum sie die "Ressource" als Parameter benötigen. Ich habe in meinem Fall den Parameter entfernt und es hat funktioniert. –

0

Wenn Sie sagen, dass Sie auf den /users/sign_up.user Link klicken, meinen Sie wörtlich diesen genauen Pfad? Weil die .user am Ende sagt es versuchen und antworten mit einem user Format, ähnlich wie pdf, xml oder json. Entferne das und schau was passiert.

3

@ zeeshan Antwort funktioniert, können Sie auch die Funktionen ohne _USER Infix:

new_registration_path(resource_name) 

new_session_path(resource_name) 

new_password_path(resource_name) 
1

ich gerade auch dieses Problem behoben haben.

Die Lösung ist, alle Wege zu Devise es auch keine zurückzukehren, kein _user Infix zu sagen bedeutet.

Bitte beachte, dass wir sind nicht in der Lage diesen Code in der Konsole zu testen:

user = User.all.sample 
app.new_registration_path(user) 

weil Devise verwendet seine helper die URL automatisch intern zu transformieren, so dass wir von außen nicht testen können.