ruby-on-rails - 尝试更新设计用户详细信息时出现路由错误,Rails 4

标签 ruby-on-rails ruby devise

我正在尝试解决在 Rails 4 项目中更改 Devise 用户详细信息的问题。基于this问题

布局:

<div class="modal fade" id="user-profile" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
            <div class="modal-dialog log-modal">
                <div class="modal-content">

                        <%= render partial: "shared/profile" %>
                </div>
            </div>
</div>

_profile 部分。

<%= form_for(@user, :url => { :action => "update_password",:controller =>"users" } ,remote: true, format: :json) do |f|  %>


    <div class="form-group">
        <%= f.text_field :name,:class=>"user-input form-control", :id=>"user-name" ,:placeholder=> "Lietotājvārds*",:"data-parsley-group"=>"f1" %>               
    </div>

    <div class="form-group">    
        <%= f.email_field :email ,:class=>"user-input form-control", :id=>"password",:placeholder=> "E-pasts *",:"data-parsley-group"=>"f2" %>                            
    </div>   

    <div class="form-group">                  
        <%= f.password_field :current_password, :autocomplete => "off"  ,:class=>"user-input form-control", :id=>"password",:placeholder=> "Vecā parole*                       ",:"data-parsley-group"=>"f3" %>  
    </div>

    <div class="form-group">                      
        <%= f.password_field :password , :class=>"user-input form-control", :id=>"password",:placeholder=> "Jaunā parole*                       vismaz 8 simboli ",  :"data-parsley-group"=>"f3" %>  
    </div>

    <div class="form-group">                        
       <%= f.password_field :password_confirmation , :class=>"user-input form-control", :id=>"password",:placeholder=> "Atkārtot paroli *                     vismaz 8 simboli ",  :"data-parsley-group"=>"f3" %>      
    </div>

    <button type="submit" class="blue-button btn btn-default">Apstiprināt</button>
<%end%>

我的路线文件:

Rails.application.routes.draw do

  get 'banned/index'

  get 'reusable/login'

  get 'reusable/registration'
  get 'reusable/password_recovery'
  resources :menus

    resources :blocked do
        collection do
           get 'checktoken'
           get 'checkemail'         
        end

        member do
            post 'toggle'
            post 'rev'
        end
      end

 ActiveAdmin.routes(self)

     scope "(:locale)", :locale => /lv|ee|ru/ do         

       devise_for :users,  :controllers => {:registrations=> "registrations"}

        resource :user, only: [:edit] do
           collection do
             patch 'update_password'
           end
        end


        resources "successful-registration", :controller => :successful_registration, :as => :successful_registration


             resources :replies do
              member do
                put "like", to: "replies#upvote"
                put "dislike", to: "replies#downvote"
              end
            end
             resources :reviews do
              member do
                put "like", to: "reviews#upvote"
                put "dislike", to: "reviews#downvote"
                put "downwote", to: "reviews#complaints"
              end
            end

            resources :reports
            resources :offers
            resources :messages
            resources :feedbacks

           resources :girls do
                collection do
                   get 'checktoken'
                   get 'checkemail'

                end
                member do
                  put "like", to: "girls#upvote"
                  put "dislike", to: "girls#downvote"
                 post 'toggle'
                end
      end

      get 'sms/receive/', to: 'sms#receive'                      
      root 'girls#index'

      end

end

日志文件:

Started POST "/ru/user/update_password" for 212.93.100.35 at 2015-10-03 14:08:12 +0300

ActionController::RoutingError (No route matches [POST] "/ru/user/update_password"):
  actionpack (4.1.6) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (4.1.6) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.1.6) lib/rails/rack/logger.rb:38:in `call_app'

我尝试过的:

1) 重启服务器 2) 试图改变用户路由的顺序。

我没有其他想法可以尝试。有什么帮助吗? 提前致谢。

最佳答案

您似乎有 PATCH 请求的路由 (patch 'update_password') 但您正在发送 POST 请求。

编辑您的路由文件(post 'update_password')或使用 PATCH 请求:

<%= form_for(@user, :url => { :action => "update_password",:controller =>"users",method: "patch" },remote: true, format: :json) do |f|  %>

关于ruby-on-rails - 尝试更新设计用户详细信息时出现路由错误,Rails 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32921893/

相关文章:

ruby - 用每个第 n 个元素压缩数组

ruby-on-rails - 使用设计和 cucumber 测试登录

ruby-on-rails - 如何对我的 Rails 应用程序的 CRUD 部分进行 DRY?

ruby - 我应该在我的 ruby​​ 脚本中定义一个 main 方法吗?

ruby-on-rails - 哪个 rails vs rails -v vs 哪个 ruby

ruby-on-rails - Rake 任务与简单数据库更改的迁移

ruby-on-rails - 覆盖设备注册 Controller 时如何编写 Controller 测试?

ruby-on-rails - 使用 Rails API 进行设计 - current_user

ruby-on-rails - Rails 4 需要并允许更新 PUT 请求

ruby-on-rails - 许多具有相同标志的 rails 模型。最佳做法是什么?