我正在使用设计3.5.2和rails 4.2.1 我遵循了Email-Only-Sign-Up,但在信息流中我有些不了解。
我已更新了我的观看/设计/注册/ new.html.erb文件,并仅请求发送电子邮件以开设帐户。
我没有触及我的confirmations_instructions.html.erb
邮件程序,但更新了上述路由并覆盖了Devise ConfirmationController(我使用了Rails 4,Devise 3代码)和User模型。
我可以创建一个没有密码的帐户来自我更新的views/devise/registrations/new.html.erb
,我收到了我未经修改的确认邮件邮件,当我点击链接时,我到达/users/confirmation?confirmation_token=xxxxx
并由我的ConfirmationsController处理#show方法这对我的技能水平来说仍然有点复杂。
我希望能够使用我创建的新视图/ devise / confirmations / show.html.erb文件来保留我的令牌并允许我的用户设置密码。提交按钮将确认我的用户。
而不是那个,然后直接发送令牌,我的用户被确认,我登陆我的登录页面。
以下是我的路线:
user_confirmation POST /users/confirmation(.:format) 确认#create new_user_confirmation GET /users/confirmation/new(.:format)确认#new GET /users/confirmation(.:format)确认#show confirm PATCH /confirm(.:format)确认#confirm
自定义ConfirmationController是维基页面的复制粘贴,视图是自定义的,但不应影响整个过程。我的routes.rb文件已经像上面提到的那样更新了,比如我添加了password_match的用户模型?和password_required?方法(那里只有我的设计模块声明,很少有has_many has_one关系...)。
如果有人可以帮助我^^
答案 0 :(得分:0)
您需要在确认令牌的表单中添加password
和password_confirmation
字段。
应用/视图/确认强>
= form_for(resource, :as => resource_name) do |f|
= f.password_field :password, class:"password-field", placeholder: "New password"
= f.password_field :password_confirmation, class:"password-field", placeholder: "Confirm new password"
= f.hidden_field :confirmation_token, value: @original_token
= f.submit "Confirm account and create password"
有关详细步骤,请使用此documentation.
答案 1 :(得分:0)
我创建了一个views / devise / confirmations / show.html.erb文件:
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<div class="row">
<div class="col-md-4 my_label">
<%= f.label :password %>
</div>
<div class='col-md-8 my_field'>
<%= f.password_field :password, autocomplete: "off", class: 'form-control', placeholder: 'mypassword' %>
</div>
</div>
<div class="row">
<div class='col-md-4 my_label'>
<%= f.label :password_confirmation %>
</div>
<div class='col-md-8 my_field'>
<%= f.password_field :password_confirmation, autocomplete: "off", class: 'form-control', placeholder: 'mypassword' %>
</div>
</div>
<%= f.input :confirmation_token, :as => :hidden, :input_html => { :value => @original_token } %>
<div class="row actions">
<div class='col-md-4'></div>
<div class='col-md-8 center-block'>
<%= f.submit("Create my Account", class: "btn btn-success button_submit") %><br>
<%= render "devise/shared/links" %>
</div>
</div>
<% end %>
我希望这可行,但我的问题是,当我点击确认邮件中的链接时,它没有映射到此视图,我不知道为什么。当我读取我的日志时,我知道令牌由ConfirmationController#show方法处理,但它没有显示show view ...