gpt4 book ai didi

ruby-on-rails - 没有模块前缀路由路径的 Rails 命名范围模型对象

转载 作者:行者123 更新时间:2023-12-04 16:50:48 31 4
gpt4 key购买 nike

我对 Rails 路由器和表单生成器有点问题。我的应用程序具有用于模型和 Controller 的命名空间模块。模块用于更容易抽象到另一个项目。

我在 routes.rb 范围方法中使用命名空间,因为我不想使用“丑陋”的路径助手。

看起来像:

scope module: :taxonomy do
resources :taxonomies do
resources :terms
end
end

问题是当我想编辑分类法时(url:taxonomies/1/edit)我得到一个错误:

undefined method `taxonomy_taxonomy_path'

因为我的路线只是 taxonomy_path

有什么方法可以到达 form_for @taxonomy 来识别路由的作用域吗?没有使用 form_for @taxonomy, url: taxonomy_path(@taxonomy) 这是无法治愈的。因为 respond_with @taxonomy 中 Controller 方法中的 @taxonomy 对象总是引用到 taxonomy_taxonomy_url

我的模型:

module Taxonomy
class Taxonomy < ActiveRecord::Base
has_many :taxonomy_terms, inverse_of: :taxonomy
has_many :terms, through: :taxonomy_terms
class Term < ActiveRecord::Base
has_one :taxonomy_term, inverse_of: :term
has_one :taxonomy, through: :taxonomy_term

和 Controller :

module Taxonomy
class TaxonomiesController < ApplicationController

最佳答案

您可以通过以下方式覆盖 ActiveRecord 的模型命名:

module Taxonomy
class Taxonomy < ActiveRecord::Base
def self.model_name
ActiveModel::Name.new("Taxonomy")
end
end
end

这会覆盖 ActiveRecord 默认命名生成,它会为 Taxonomy 类生成 taxonomy_taxonomy 名称,因为它在 Taxonomy 模块下。它应该可以解决您的路由名称问题并根据您的意愿生成正确的路由名称。

关于ruby-on-rails - 没有模块前缀路由路径的 Rails 命名范围模型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11843193/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com