【问题标题】:form_for routing error with scope :module nested routesform_for 范围内的路由错误:module 嵌套路由
【发布时间】:2015-10-21 02:15:30
【问题描述】:

这可能没有意义,但我正在努力学习更难的东西和进步,似乎我缺少地址的 ID,但似乎找不到解决方案。

我将 url 包含在 form_for 中,因为当我删除它时,应用程序会中断。但似乎我预定义了 url 而不是编辑中断。

 <%= form_for([@address.user, @address], :url => user_addresses_path) do |f| %>

错误读数:
没有路由匹配 [PATCH] "/users/1/addresses"

当我删除 :url=>
未定义的方法`user_client_address_path'

routes.rb

Rails.application.routes.draw do

    # Security Devise Setup
    devise_for :admins
    devise_for :users

    # Main Pages
    root 'website/page#index'

    # Client Sections
    resources :users do
        scope module: "client" do
            root :to => 'dashboard#index'
            resources :addresses
        end
    end

    namespace :admin do
        root :to => 'panel#index'
    end

end

rake 路由部分输出(如果需要更多,请告诉我)

user_addresses      GET    /users/:user_id/addresses(.:format)          client/addresses#index
                    POST   /users/:user_id/addresses(.:format)          client/addresses#create
new_user_address    GET    /users/:user_id/addresses/new(.:format)      client/addresses#new
edit_user_address   GET    /users/:user_id/addresses/:id/edit(.:format) client/addresses#edit
user_address        GET    /users/:user_id/addresses/:id(.:format)      client/addresses#show
                    PATCH  /users/:user_id/addresses/:id(.:format)      client/addresses#update
                    PUT    /users/:user_id/addresses/:id(.:format)      client/addresses#update
                    DELETE /users/:user_id/addresses/:id(.:format)      client/addresses#destroy

【问题讨论】:

  • rake routes 的输出是什么?由于某种原因,您的表单使用 PATCH 而不是 POST 提交。您是否尝试通过 AJAX 提交?
  • 您是否通过 AJAX 提交表单?或者它有你点击的提交按钮?
  • 有趣。它有两个条目。补丁/放置。我有一个可能导致问题的管理模板。可能是某种 JavaScript 或 AJAX。
  • 我会检查的。唯一分配给表单按钮的是 Twitter Bootstrap 类。
  • 是的,但 PATCH/PUT 用于单个地址编辑。您正在使用只有 GET 和 POST 的 user_addresses_path

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

如果您使用 AJAX 提交表单,请尝试在其中添加 method: 'POST'

如果您正常提交表单,请尝试将method: :post 添加到form_for 哈希中。

最终应该是这样的:

&lt;%= form_for([@address.user, @address], url: user_addresses_path, method: :post) do |f| %&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    相关资源
    最近更新 更多