8

我的指南模型有一个国家属性。我不想使用插件,我只想将国家作为字符串。一切正常,直到我尝试在 activeadmin 中编辑指南,然后我收到错误消息:

ActionView::Template::Error (要使用 :country 输入,请安装 country_select 插件,例如: https ://github.com/jamesds/country-select ):1:insert_tag renderer_for(:edit)

以我的形式我有

 <%= f.input :country, as: :string%>

在我的 admin/guidelines.rb 我有

index do                            
    column :title   
    column :specialty                
    column :content       
    column :hospital
    column :country   
    column :user
    default_actions                   
  end
4

6 回答 6

18

我不确定你从哪里得到这个表单代码,但我在 Active Admin 上遇到了同样的问题,并通过明确指示表单将字段视为字符串来解决它:

ActiveAdmin.register Guideline do

  form do |f|
    f.inputs 'Details' do
      f.input :country, :as => :string
    end
    f.actions
  end

end
于 2013-10-23T18:43:30.150 回答
4

首先你需要在 GemFile 中添加 gem

gem 'country-select'

创建一个帮助文件“/app/helpers/active_admin/views_helper.rb”。添加以下代码

module ActiveAdmin::ViewsHelper

  def country_dropdown 
    ActionView::Helpers::FormOptionsHelper::COUNTRIES
  end 
end 

在您的视图文件中使用

form do |f|
  f.inputs do 
    f.input :country, as: :select, collection: country_dropdown
  end

  f.actions
end
于 2014-03-17T11:39:49.137 回答
1

使用country_select. 如果您最近这样做,似乎可以在 Rails 4.1 上正常工作。加上 Rails 旧回购链接到这个而不是国家选择。

于 2014-05-09T06:10:37.430 回答
0

您正在使用ActiveAdmin,因此您也在使用Formtastic

在 Formtastic 中,在文件 formtastic /lib/formtastic/inputs/country_input.rb中清楚地说:

# Rails doesn't come with a `country_select` helper by default any more, so you'll need to do
# one of the following:
#
# * install the [country_select](https://github.com/stefanpenner/country_select) gem
# * install any other country_select plugin that behaves in a similar way
# * roll your own `country_select` helper with the same args and options as the Rails one

我会添加gem 'country-select'到您的Gemfile并进行捆绑安装,这是最简单和最快的解决方案。

于 2013-05-16T19:15:40.063 回答
-1

我想你可以安装 gem,然后覆盖 active_admin 中的显示。

于 2013-05-06T22:12:28.387 回答
-4

我建议您使用country-select

gem 'country-select'

我花了很多时间来找出为什么 country-select 在我的表单中不起作用:)

于 2014-04-02T08:57:22.940 回答