联系人的 ActiveAdmin 详细信息转到名称相似的页面
Posted
技术标签:
【中文标题】联系人的 ActiveAdmin 详细信息转到名称相似的页面【英文标题】:ActiveAdmin details for Contact goes to Page with similar name 【发布时间】:2017-02-01 23:18:48 【问题描述】:我意识到这个问题很可能出现在我的应用代码中,但我不知道在哪里查看这一点。
我已经在 rails 4.2.1 上成功安装了 ActiveAdmin 1.0.0.pre4(按照说明 these instructions。我关闭了身份验证,因为我们已经使用自定义管理系统设置了设计,我将配置 ActiveAdmin 以使用一旦我们知道它对我们有用。我还将 default_namespace 配置为 activeadmin(不是 admin),因为我们已经在 /admin 下拥有自定义管理工具。
/activeadmin 成功显示仪表板。所以我添加了两个模型(Contact 和 Flag)。标志 (/activeadmin/flags) 按预期工作 - 它显示所有记录和 Id、查看和编辑所有链接到相应的详细信息视图。
对于联系人,列表视图按预期工作 (/activeadmin/contacts)。它显示记录和过滤器似乎工作。
问题是,如果我单击任何联系人的 ID、查看或编辑链接,它们都会显示相同的内容:我的一个页面记录的详细信息视图(我什至还没有为 ActiveAdmin 配置)。他们显示相同的页面详细信息 - 它的标题为“联系我们”(以及“联系我们”)。 ActiveAdmin UI 中的所有内容看起来都应如此:URL 是 /activeadmin/contacts/39,面包屑是正确的,甚至面板标题都显示“联系人详细信息”。但无论我选择哪个联系人,它总是显示“联系我们”页面。
我可以通过编辑 ActiveAdmin 的 contact.rb 文件来缩短它。但是,我只能让它显示“标题”(来自页面联系我们),而不是任何其他字段。其他所有内容(无论是来自 Page 模型还是 Contact 模型)都会引发异常:undefined local variable or method `body' for #<ActiveAdmin::Views::Pages::Show:0x007fdfff3e7c40>
请注意,它显然是在寻找 Pages,而不是 Contacts。请求参数为:"controller"=>"activeadmin/contacts", "action"=>"show", "id"=>"39"
以前我认为它与蛞蝓有关,尽管我已经删除了friendly_id gem 并注释掉了引用它的代码(并且错误意味着它不再工作)。没什么区别。
还有:
- /activeadmin/contacts/ 都显示联系我们页面的详细信息
- /activeadmin/contact-us 或联系人(带或不带 /)给出路由错误 (No route matches [GET] "/activeadmin/..."
)
我尝试添加我的 Page 模型,然后使用自定义 page.rb
ActiveAdmin.register Page, :as => "fancy_page"
(正如我在问题959 中读到的)。但这并没有改变行为。 Fancy Pages 确实列出了我所有的页面,并且 Id、View 和 Edit 所有链接都指向正确的详细信息页面。
重写我的整个应用程序以重命名 Page 模型将非常困难(前端网站和相关的自定义 CMS 是我们应用程序中完全可以正常工作和生活的一部分)。我希望有一个更简单的解决方法,但我不确定在哪里寻找。
有什么建议吗?
谢谢!
朱莉
【问题讨论】:
【参考方案1】:您需要通过这样的配置自定义联系人的activeadmin资源的'Form'配置:
form do |f|
f.inputs 'Details' do
f.translated_inputs 'ignored title', switch_locale: false do |t|
t.input :name, :hint => 'Contact name'
t.input :email, :hint => 'Contact email'
end
end
actions
end
请注意,您必须根据您的模型字段更改名称和电子邮件。
要对视图进行更多自定义(show
操作),您可以通过以下方式进行:
show do |contact|
attributes_table do
row :id
row :name
row :email
end
end
【讨论】:
感谢 Moamen,但这并不能解决问题。默认行为(根本没有自定义)对于我加载的其他模型非常有效。尽管如此,我尝试了您的建议,但我仍然为我的 Contact 模型详细信息获得了 Contact Us Page 模型。以上是关于联系人的 ActiveAdmin 详细信息转到名称相似的页面的主要内容,如果未能解决你的问题,请参考以下文章