我正在使用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
,但无效。
我做错了什么?
答案 0 :(得分:0)
从您的日志中可以看出,由于某种原因,它没有正确提交。表单是使用GET HTTP动词提交的,但必须使用PUT / PATCH HTTP动词提交,以便调用更新操作,这是设置密码的地方。
请问您是否可以检查在现场设置的invitation_accepted?您还可以通过检查开发人员工具以简单的html格式发布表单标签及其内容吗?
PS:我最好把它添加为评论但是我现在没有足够的声望点。