设计邀请没有设置密码

时间:2016-04-01 18:53:14

标签: ruby-on-rails devise devise-invitable

我正在使用gem Devise Invitable发送邀请并在我的Rails应用程序中接受它们。

一旦用户点击接受邀请链接,他就会被重定向到他可以按预期设置密码的页面,但是,一旦我提交表单,它只会将我重定向回相同的页面以设置密码

我的表格是:

 <%= form_for resource, as: resource_name, url: invitation_path(resource_name),
  html: { method: :put, class: "form-horizontal col-xs-12 col-md-6 col-md-offset-3" } do |f| %>

  <div class="sheet form-sheet">
    <div class="sheet-inner">
      <%= f.hidden_field :invitation_token %>

      <%= f.form_group :password do |f| %>
      <%= f.label :password, class: "form-label" %>
      <%= f.password_field :password, autofocus: true, class: "" %>
      <%= f.error_messages %>
      <% end %>

      <%= f.form_group :password do |f| %>
      <%= f.label :password_confirmation, class: "form-label"  %>
      <%= f.password_field :password_confirmation, class: "" %>
      <%= f.error_messages %>
      <% end %>
    </div>
  </div>

  <div class="form-actions text-right">
    <%= f.submit "Activate Invite", class: 'btn btn-outline-primary' %>
  </div>
  <% end %>

这是我提交表单时的服务器日志:

    Started GET "/users/invitation/accept.14?invitation_token=StRLZtV_B3zEssZ2zKNs" for ::1 at 2016-04-01 23:54:24 +0530
Processing by Devise::InvitationsController#edit as 
  Parameters: {"invitation_token"=>"StRLZtV_B3zEssZ2zKNs"}
  User Load (0.7ms)  SELECT  "users".* FROM "users" WHERE "users"."deleted_at" IS NULL AND "users"."invitation_token" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["invitation_token", "dc88f68ca78c337de574137225018e35220d911ca9b1d2a50cf9fe6d103f781d"], ["LIMIT", 1]]
  Rendered devise/invitations/edit.html.erb within layouts/_minimal (2.3ms)
  Rendered layouts/_navbar.html.erb (0.5ms)
Completed 200 OK in 351ms (Views: 347.2ms | ActiveRecord: 0.7ms)

似乎没有更新用户的密码。

我已尝试将网址更改为user_invitation_path,但无效。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

从您的日志中可以看出,由于某种原因,它没有正确提交。表单是使用GET HTTP动词提交的,但必须使用PUT / PATCH HTTP动词提交,以便调用更新操作,这是设置密码的地方。

请问您是否可以检查在现场设置的invitation_accepted?您还可以通过检查开发人员工具以简单的html格式发布表单标签及其内容吗?

PS:我最好把它添加为评论但是我现在没有足够的声望点。