【问题标题】:Formtastic::UnknownInputError in ActiveAdmin::Devise::Sessions#newActiveAdmin::Devise::Sessions#new 中的 Formtastic::UnknownInputError
【发布时间】:2015-12-30 11:54:07
【问题描述】:

使用 Rails 5.0.0.beta1。

已安装 Active Admin 和 Devise。这是 Gemfile 的内容:

# Backend
gem 'activeadmin', '~> 1.0.0.pre2'

# Authentication
# Master branch is added for Rails 5 support
# https://github.com/plataformatec/devise/pull/3714
gem "devise", :github => 'plataformatec/devise', :branch => 'master'

按照说明安装here

rails g active_admin:install User
rake db:migrate
rake db:seed
rails server

当我尝试输入/admin时,出现以下错误:

显示/usr/local/rvm/gems/ruby-2.2.2@mysite.com/gems/activeadmin-1.0.0.pre2/app/views/active_admin/devise/sessions/new.html.erb 第 10 行在哪里提出:

找不到输入类Input

提取的源代码(在 #332 行附近): raise Formtastic::UnknownInputError, "Unable to find input #{$!.message}"

如果我们查看activeadmin-1.0.0.pre2/app/views/active_admin/devise/sessions/new.html.erb(第 10 行),这里并没有什么特别之处:

f.input :password, label: t('active_admin.devise.password.title')

怎么了?也许由于某种原因没有自动加载 Formtastic 类?我尝试将 Formtastic 更新到最新版本,但错误仍然存​​在。

我知道使用测试版有点冒险,但我想尝试一下。

【问题讨论】:

标签: ruby-on-rails activeadmin formtastic


【解决方案1】:

想通了。以下是可用的选项:

1) 可能是最好的选择。只需使用 Rails 4.2.5 并等待 Rails 5 的稳定版本和相应的 gem 更新。

2) 创建文件app/active_admin/inputs/input.rb,内容如下:

module ActiveAdmin
  module Inputs
    class Input < ::Formtastic::Inputs::StringInput
    end
  end
end

相关信息可在here获取。

它解决了访问登录页面错误,您现在可以成功登录并查看仪表板。但是,例如,如果您尝试输入“用户”部分,则会收到另一个错误:

NoMethodError: 未定义的方法flat_map for #&lt;ActionController::Parameters&gt; 来自/usr/local/rvm/gems/ruby-2.2.2@mysite.com/gems/activeadmin-1.0.0.pre2/lib/active_admin/view_helpers/fields_for.rb:20:in fields_for_params

这是因为 Rails 5 中的 ActionController::Parameters 不再扩展包含 EnumerableActiveSupport::HashWithIndifferentAccess(其中包含方法 flat_map)。 但我认为这不是您要解决的唯一一个错误。

3) 这个错误,2)中提到的错误和其他一些错误已经在this pull requestrails-5-spec分支上修复了,所以我改用它了而是在 Gemfile 中:

gem 'activeadmin', :github => 'activeadmin/activeadmin', :branch => 'rails-5-rspec'

现在错误消失了。

更新:我选择了3rd选项,它解决了开发服务器上的问题,但是当我将应用程序部署到生产环境时,又出现了错误。我使用了 2) 中提到的修复程序,现在在生产服务器上也可以了。

【讨论】:

    【解决方案2】:

    您的 Gemfile 中 formtastic 的 css master 分支

    gem 'formtastic', git: 'git@github.com:justinfrench/formtastic.git', :branch => 'master'

    然后执行bundle update 并重新启动服务器rails s -d

    【讨论】:

      猜你喜欢
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      相关资源
      最近更新 更多