我之前曾与设计合作,但我无法理解这次我做错了什么。所有相关问题都没有解释。单击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
答案 0 :(得分:0)
当您将资源传递到路径方法(例如new_user_registration_path
)时,Rails将尝试路由到该资源的操作并将其插入到路径中。由于您没有为其定义资源的匹配器的路由,因此Rails只会将.<resource.to_param>
附加到URL的末尾。显然,这不是你想要的,因为注册并不需要占用资源。
您获得此特定异常的原因是因为设计尝试响应多种响应类型(html,json,xml等),它会解析.user作为您希望接收的类型因此,未知格式错误。