And*_*ers 6 ruby ruby-on-rails devise ruby-on-rails-4
我有一个Rails 4.2.3应用程序,我使用Devise进行用户身份验证.我在Bootstrap模式中呈现我的注册表单.我已经实现了类似于:https://github.com/plataformatec/devise/wiki/How-To : -Display-a-custom-sign_in-form-anywhere-in-your-app.在注册时我不断收到此错误:
Completed 406 Not Acceptable in 512033ms (ActiveRecord: 5.8ms)
ActionController::UnknownFormat (ActionController::UnknownFormat)
Run Code Online (Sandbox Code Playgroud)
我不是如何解决它.
我使用自定义控制器sessions和registrations.我的路线目前看起来像这样:
devise_for :users, :controllers => {sessions: "users/sessions", registrations: "users/registrations"}
get 'users/show', to: "users#show"
get 'users', to: "users#index"
Run Code Online (Sandbox Code Playgroud)
我的新用户表单看起来像这样 - 这是在Bootstrap模式中呈现的部分呈现:
= form_for(resource, as: resource_name, url: user_registration_path(resource_name)) do |f|
= devise_error_messages!
.form-group
= f.label :name
= f.text_field :name, autofocus: true, class: "form-control"
.form-group
= f.label :email
= f.email_field :email, class: "form-control"
.form-group
= f.label :password
- if @minimum_password_length
%em
(#{@minimum_password_length} characters minimum)
= f.password_field :password, autocomplete: "off", class: "form-control"
.form-group
= f.submit "Sign up", class: "btn btn-default"
- if current_page?(new_user_registration_path)
= render "devise/shared/links"
Run Code Online (Sandbox Code Playgroud)
应用程序在我的Users::RegistrationsController < Devise::RegistrationsController create方法中崩溃:
# POST /resource
def create
# byebug
super
end
Run Code Online (Sandbox Code Playgroud)
浏览器中的URL如下(看起来很可疑!):
http://localhost:3000/users.user
Run Code Online (Sandbox Code Playgroud)
我试过添加:
respond_to :json, :html
Run Code Online (Sandbox Code Playgroud)
在我的顶部Users::RegistrationsController < Devise::RegistrationsController,但没有帮助.
注意
运行gem后bye bug,应用程序似乎在此方法中崩溃:
# The path used after sign up.
def after_sign_up_path_for(resource)
byebug
session[:previous_url] || root_path # crashes here
end
Run Code Online (Sandbox Code Playgroud)
session[:previous_url] 回报 "/apps/1/edit"
关于我在这里或其他地方做错的任何想法?
旁注 我同时正在努力解决另一个设计问题(它们可能是相关的).我在这里有另一个问题:Rails 4 - 设计,访客用户导致过滤器链停止
Yur*_*dev 16
只需在表单中更改:
= form_for(resource, as: resource_name, url: user_registration_path) do |f|
Run Code Online (Sandbox Code Playgroud)
user_registration_path不需要额外的参数,并传递resource_name给它,这与user您的情况相同.它被解释为格式,因此你得到url http://localhost:3000/users.user(user在这种情况下设置为格式).
| 归档时间: |
|
| 查看次数: |
2536 次 |
| 最近记录: |