2013-10-05 31 views
7

私はDevails 3.1.1を使ってRails 4アプリケーションを開発中です。私は/users/sign_up.userリンクRailsの上でクリックすると、次の例外がスローされます。アプリを始め、私は3.1.1に工夫をアップグレードする解決かもしれないと思ったときにRails 4 Devise 3.1.1 DevContest :: UnknownFormat in Devise :: RegistrationsController#new

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' 
.... 

私が考案さ3.0.0.rcに実際にいました問題は、それはしませんでした。 SO/google/devise githubプロジェクトに役立つものは見つかりませんでした。どのようにそれを回避するか考えています。ありがとう!

答えて

13

私はDeviseが作成したデフォルトのリンクを、各リンクの最後に ".user"を付けたものに変更したくありませんでした。形式として「.user」を使用するように指示のlink_to方法でパスへのパラメータとしてユーザである

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

RESOURCE_NAME、:生成次のリンクを考案。そこで、各パスからresource_nameを削除しました。私はなぜDeviseがこれをやっているのだろうか? zeeshanの回答作品@

+0

「リソース」がなぜ必要なのかもわかりません。私は私のケースでは、パラメータを削除し、それは働いた。 –

0

/users/sign_up.userリンクをクリックすると、文字通りその正確なパスを意味しますか?最終的に.useruser形式で試して応答するように指示しているため、pdfxml、またはjsonに似ています。それを取り除き、何が起こるかを見てください。

3

、あなたがすることもでき_userの中置なし機能:

new_registration_path(resource_name) 

new_session_path(resource_name) 

new_password_path(resource_name) 
1

私はまた、この問題を解決してきました。

ソリューションには_user中置を言わないように意味、Deviseデフォルトのものへのすべてのパスを戻すことです。工夫は、我々は外部からテストすることはできませんので、自動的に内部のURLを変換するためにそのhelperを使用しているため

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

:我々

注意コンソールでこれらのコードをテストすることができません。