Contact的ActiveAdmin详细信息将转到具有相似名称的页面

时间:2016-09-24 02:26:13

标签: ruby-on-rails activeadmin

我意识到这个问题很可能出现在我的应用程序代码中,但我很难看到这一点。

我已成功在rails 4.2.1上安装了ActiveAdmin 1.0.0.pre4(按照说明these instructions。我关闭了身份验证,因为我们已经设置了自定义管理系统,我将配置ActiveAdmin一旦我们知道它为我们工作就使用它。我还将default_namespace配置为activeadmin(而不是admin),因为我们已经在/ admin下有自定义管理工具。

/ activeadmin成功显示仪表板。所以我添加了两个模型(Contact和Flag)。标志(/ activeadmin / flags)按预期工作 - 它显示所有记录以及Id,View和Edit all链接到相应的详细信息视图。

对于“联系人”,列表视图按预期工作(/ 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"}

之前我曾认为它与slug有关,虽然我已经删除了friendly_id gem并注释掉了引用它的代码(并且错误意味着它不再起作用)。它没有任何区别。

此外: - / activeadmin / contacts / all显示联系我们页面详细信息 - / activeadmin / contact-us或contact(有或没有/)给出路由错误(No route matches [GET] "/activeadmin/..."

我尝试添加我的Page模型,然后使用自定义page.rb ActiveAdmin.register Page, :as => "fancy_page" (正如我在问题959中所读到的那样)。但这并没有改变这种行为。 Fancy Pages确实列出了我的所有页面,Id,View和Edit all链接到正确的详细信息页面。

重写我的整个应用程序以重命名Page模型将非常困难(前端网站和相关的自定义CMS是我们的应用程序中完全正常工作和生活的一部分)。我希望有一个更简单的解决办法,但我不确定在哪里看。

有什么建议吗?

谢谢!

朱莉

1 个答案:

答案 0 :(得分:0)

您需要自定义表格&#39;通过这种配置配置联系人的activeadmin资源:

  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

请注意,您必须更改姓名&amp;根据您的模型字段发送电子邮件。

要在视图(show操作)上进行更多自定义,您可以通过以下方式执行此操作:

  show do |contact|
    attributes_table do
      row :id
      row :name
      row :email
    end
  end