我使用Rails 5,我的路线看起来像:
Rails.application.routes.draw do
namespace :admin do
namespace :moderation do
resources :templates
end
resources :users, except: [:new, :create] do
namespace :moderation do
resources :messages, only: [:index, :show, :new, :create, :update, :edit] do
resources :message_replies, only: [:create, :edit, :update]
end
resources :templates
end
end
root "home#index"
end
end
我有models/admin/user.rb
:
module Admin
class User < ::User
end
end
models/admin/moderation/template.rb
:
module Admin
module Moderation
class Template < ::Moderation::Template
end
end
end
现在,当我尝试使用url_for
帮助程序生成正确的路径时:
2.4.1 (main):0 > admin_user = Admin::User.first
2.4.1 (main):0 > admin_moderation_template = Admin::Moderation::Template.first
2.4.1 (main):0 > url_for([admin_user, admin_moderation_template])
NoMethodError: undefined method `admin_user_admin_moderation_template_url' for main:Object
而不是admin_user_moderation_template_url
我获得admin_user_admin_moderation_template_url
。在这种情况下我应该如何生成正确的路线?
答案 0 :(得分:0)
我想知道您是否可以使用此xxx_url()
帮助程序解决问题。在你的情况下,它是:
admin_user_moderation_template_url( user_id: admin_user.id, id: admin_moderation_template.id )
不幸的是我无法尝试,因为我必须构建您正在使用的应用程序。但正如this answer中所述,您可以使用符号来创建admin_user_moderation_template_url
。
尝试运行以下行并告诉我它是否有效(我不确定user_id
是否处于正确的位置,但它可能有效)。
url_for( [:admin, :user, :moderation, :template, user_id: admin_user.id, id: admin_moderation_template.id ])
您还需要用户和模板之间的关联才能链接它们。