联系人的 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 详细信息转到名称相似的页面的主要内容,如果未能解决你的问题,请参考以下文章

转到上一个视图控制器

在 Rails 5 应用程序中使用 ActiveAdmin 创建用户个人资料页面

从子窗体访问去记录

Xib 到 ViewController

获取带有全名详细信息和电话号码的 SINGLE 光标

js如何实现进入页面后自动跳转到锚点