form_with回复使用GET而不是POST?

时间:2017-11-17 20:07:45

标签: ruby-on-rails

我正在尝试使用 form_with 将此表单发回我的 app_users_password_reset_path ,但由于某种原因,使用的方法总是GET而不是POST。在我的控制器中,当我检查 request.post?时,它总是错误的。

我在这里做错了什么?

# config/routes.rb

match '/app/users/password_reset', to: 'users#password_reset', as: :app_users_password_reset, via: [:get, :post]

相关路线的铁路路线输出为:

# > rails routes
app_users_password_reset GET|POST /app/users/password_reset(.:format) users#password_reset

以下是我的表单的标记:

# password_reset.html.erb

 <div class='row'>
         <div class='body col-md-3'>

            <form>

                <%= form_with scope: :user,
                    method: :POST, 
                    url: app_users_password_reset_path,
                    local: true,
                    role: :form do |f| %>

                    <%= f.hidden_field :token, value: @password_reset_token %>

                    <div class="form-group">
                        <%= f.label :user_password, "Password" %>
                        <%= f.password_field :password, value: @password, class: "form-control" %>
                    </div>

                    <div class="form-group">
                        <%= f.label :password_confirmation, "Password confirmation" %>
                        <%= f.password_field :password_confirmation, value: @password_confirmation, class: "form-control"  %>
                    </div>

                    <div class="form-group">
                        <%= f.submit "Reset password", id: "btn-reset-password", class: "btn btn-default" %>
                    </div>
                <% end %>

            </form>

        </div>
</div>

1 个答案:

答案 0 :(得分:1)

form_with代码包含在另一个html表单标记内,这可能导致问题。尝试删除和标记。