【问题标题】:ArgumentError in Admin::Users#new Rails 4 active admin gem with devise ruby 2.0ArgumentError in Admin::Users#new Rails 4 active admin gem with devise ruby​​ 2.0
【发布时间】:2013-12-28 12:53:05
【问题描述】:

我正在使用 ruby​​ 2.0 将 rails 3 应用程序转换为 rails 4。

devise (~> 3.2)
gem 'activeadmin', github: 'gregbell/active_admin'

我在 admin 中的 user.rb 文件如下所示

ActiveAdmin.register User do
before_filter { @skip_sidebar = true }
filter :email
filter :role, as: :check_boxes, collection: User::ROLES
filter :created_at

index do
column :email
column :role
column :created_at
column :current_sign_in_at
column :current_sign_in_ip, sortable: false
default_actions
end

show :title => :email do |ad|
attributes_table do
  row :email
  row :role
  row :created_at
  row :sign_in_count
  row :current_sign_in_at
  row :current_sign_in_ip
  row :last_sign_in_at
  row :last_sign_in_ip
end
active_admin_comments
end

form partial: 'form'

member_action :create, :method => :post do
@user = User.new(params[:user], as: :admin)
if @user.save

  redirect_to [:admin, @user]
else
  render action: "new"
end
end

member_action :update, :method => :put do
@user = User.find(params[:id])
if @user.update_attributes(params[:user], as: :admin)
  redirect_to [:admin, @user]
else
  render action: "edit"
 end
 end

end

我还创建了新用户部分来自定义视图,如下所示

- semantic_form_for [:admin, @user] do |f|
  - f.inputs do
    = f.input :email
    = f.input :role, collection: User::ROLES, include_blank: false
  - f.actions do
    = f.action :commit
    = f.action :cancel

但我收到以下错误

ArgumentError in Admin::Users#new

Showing /dffsdfs/app/views/admin/users/_form.html.haml where line #1 raised:

wrong number of arguments (3 for 2)

Extracted source (around line #1):

- semantic_form_for [:admin, @user] do |f|
  - f.inputs do
    = f.input :email
    = f.input :role, collection: User::ROLES, include_blank: false

【问题讨论】:

    标签: ruby devise ruby-on-rails-4 activeadmin


    【解决方案1】:

    当您构建表单时semantic_form_for 需要将属性作为模型在这种情况下管理员不是模型
    你需要使用这个:

    - semantic_form_for @user do |f|
      - f.inputs do
        = f.input :email
        = f.input :role, collection: User::ROLES, include_blank: false
    

    【讨论】:

    • 实际上我只需要从 gem 文件中删除 meta_search gem 就可以开始工作了,但是感谢您的建议。
    • 糟糕的方式meta_search 需要对active_admin 进行良好的搜索和过滤
    • @Monk_Code meta_search 已被 Ransack 替换为 Github 上最新的 Active Admin 代码,这是 OP 正在使用的。
    【解决方案2】:

    我需要从我的 gem 文件中删除 mete_search gem,然后它才能工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多