2016-04-01 49 views
0

我正在使用gem设计Invited发送邀请并在我的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 "https://stackoverflow.com/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) 

它似乎并没有被更新使用r的密码。

我试过将网址更改为user_invitation_path但无济于事。

我在做什么错?

回答

0

从您的日志中可以清楚地看到它由于某种原因没有正确提交。表单正在以GET HTTP谓词提交,而它必须以PUT/PATCH HTTP谓词提交,以便它调用更新操作,该操作即将设置密码的位置。

请你检查一下邀请字段是否被设置了吗?你也可以通过从开发人员工具中检查,以纯HTML格式发布表单标记及其内容吗? PS:我最好将此添加为评论,但我现在没有足够的信誉点。