提交rails后重新路由到路径

时间:2015-02-02 09:36:18

标签: ruby-on-rails

我正在让用户重置密码,然后在完成后重新路由。但是,当使用表单标签和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>

2 个答案:

答案 0 :(得分:0)

url选项是那里的问题。 Rails将提交正常。新视图将提交给创建操作并编辑更新

答案 1 :(得分:0)

更新,之前的回答确实过程重新路由,但没有更新。我需要params才能在更新模型中找到用户。耙路线显示我确实需要将其从贴片更改为贴片!

<%= form_for @customer, :url => customer_password_resets_path, :method => :patch do |f| %>