Rails 4设计3.1.1 ActionController :: Devise中的UnknownFormat :: RegistrationsController #new
我正在使用Devise 3.1.1开发用于用户身份validation的Rails 4应用程序。 当我单击/users/sign_up.user链接时,Rails会抛出以下exception:
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' ....
我在启动应用程序时实际上是在Devise 3.0.0.rc上,我认为将设备升级到3.1.1可能会解决问题,但事实并非如此。 在SO / google / devise github项目中找不到任何有用的东西。 任何想法如何解决它。 谢谢!
我不想更改Devise生成的默认链接,在每个链接的末尾附加“.user”。 设计产生以下链接:
new_user_registration_path(resource_name) new_user_session_path(resource_name) new_user_password_path(resource_name)
resource_name,用户,作为link_to方法中路径的参数,告诉它使用“.user”作为格式。 所以我刚从每个路径中删除了resource_name。 我想知道为什么Devise会这样做!
@ zeeshan的答案有效,你也可以没有_user中缀的函数:
new_registration_path(resource_name) new_session_path(resource_name) new_password_path(resource_name)
我刚刚解决了这个问题。
解决方案是将所有路径恢复为Devise
默认路径,这意味着没有_user
infix。
请注意,我们无法在控制台中测试这些代码:
user = User.all.sample app.new_registration_path(user)
因为Devise使用它的帮助器在内部自动转换url所以我们无法从外部进行测试。
当你说你点击/users/sign_up.user
链接时,你的字面意思是确切的路径吗? 因为.user
最终告诉它尝试用user
格式进行响应,类似于pdf
, xml
或json
。 删除它,看看会发生什么。