Devise中的ActionController :: UnknownFormat :: RegistrationsController #new。网址

时间:2016-03-25 10:04:01

标签: ruby-on-rails devise

我之前曾与设计合作,但我无法理解这次我做错了什么。所有相关问题都没有解释。单击SignUp链接后,我收到如下错误

ActionController::UnknownFormat in Devise::RegistrationsController#new

在第207行

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

但是,如果我从

更改我的链接
  <%= link_to "Sign up", new_user_registration_path(resource_name) %>

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

注册页面加载得很好。另外需要注意的是,当我点击注册链接时,我的网址看起来像http://localhost:3000/users/sign_up.user,而不是http://localhost:3000/users/sign_up,应该是这种情况。

我提到Rails 4 Devise 3.1.1 ActionController::UnknownFormat in Devise::RegistrationsController#new并发现删除resource_name的想法似乎有效。但是,我不明白为什么。 Thanx in Advance

1 个答案:

答案 0 :(得分:0)

当您将资源传递到路径方法(例如new_user_registration_path)时,Rails将尝试路由到该资源的操作并将其插入到路径中。由于您没有为其定义资源的匹配器的路由,因此Rails只会将.<resource.to_param>附加到URL的末尾。显然,这不是你想要的,因为注册并不需要占用资源。

您获得此特定异常的原因是因为设计尝试响应多种响应类型(html,json,xml等),它会解析.user作为您希望接收的类型因此,未知格式错误。