我正在让用户重置密码,然后在完成后重新路由。但是,当使用表单标签和redirect_to时,我得到了一些不受欢迎的重新路由。
成功提交后,表单应重新路由到:
https://myherokuapp.herokuapp.com/customer_password_resets/new
但改为路由:
https://myherokuapp/customer_password_resets/create.ShoyTPeAC5UAEjjWwZh_HA //额外的部分是令牌ID
CustomerPasswordResetsController控制器
def edit
@customer = Customer.find_by_password_reset_token!(params[:id])
end
def update
@customer = Customer.find_by_password_reset_token!(params[:id])
if @customer.password_reset_sent_at < 2.hours.ago
redirect_to new_customer_password_reset_path, :alert => "Password reset has expired."
elsif @customer.update_attributes(params[:customer])
redirect_to new_customer_password_reset_path, :notice => "Password has been reset!"
else
render :edit
end
end
customer_password_resets / edit.html.erb
<%= form_for @customer, :url => customer_password_resets_path(params[:id]) do |f| %>
<% if @customer.errors.any? %>
<div class="error_messages">
<h2>Form is invalid</h2>
<ul>
<% for message in @customer.errors.full_messages %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :password %>
<%= f.password_field :password %>
</div>
<div class="field">
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
</div>
<div class="actions"><%= f.submit "Update Password" %></div>
答案 0 :(得分:0)
url选项是那里的问题。 Rails将提交正常。新视图将提交给创建操作并编辑更新
答案 1 :(得分:0)
更新,之前的回答确实过程重新路由,但没有更新。我需要params才能在更新模型中找到用户。耙路线显示我确实需要将其从贴片更改为贴片!
<%= form_for @customer, :url => customer_password_resets_path, :method => :patch do |f| %>