我有以下内容:
collection_action :new, :method => :post do
begin
user = User.find_by_email(params[:email])
if user
UserPermission.create(:user_id => user.id,
:permission => UserPermission::SUPPORT,
:creator => current_user)
end
rescue ActiveRecord::RecordNotFound
flash[:warn] = 'User not found'
end
redirect_to admin_support_users_path, notice: 'Support user added.'
end
form do |f|
f.inputs do
f.input :email
end
end
action_item only: [:index], :method => :post do
link_to 'Add Support User', new_admin_support_user_path
end
上述工作意味着不会抛出任何错误。支持用户页面加载,我可以单击添加支持用户按钮。但是,'支持用户已添加。'立即显示。 “添加支持用户”按钮不会将我带到表单以输入电子邮件。如何添加/创建/使用将电子邮件参数传递给我的collection_action的表单?
我是activeadmin的新手,文档很少,所以任何帮助都表示赞赏。感谢。
答案 0 :(得分:0)
您只需要添加另一个操作 - 就像普通资源需要为create和new分别执行操作一样。你新的'动作可以内联或单独部分呈现自定义表单,如下所示:
http://www.activeadmin.info/docs/5-forms.html
那就是说,我不确定我理解你为什么需要自定义动作。这是在您的用户资源文件中的活动管理员?如果是这样,您可以使用默认的新用户操作,并将表单中的当前用户包含为隐藏变量作为创建者。如果这不在您的用户资源活动管理文件中,那么您可能需要一个。
答案 1 :(得分:0)
想出来。我会按照我的理解尝试解释。我最初的问题可能不清楚。我之所以添加“支持”用户,是因为我已经添加了“支持”用户。'消息是因为我正在更新错误的方法。上面的方法应该是:create controller方法,而不是:new controller方法。 :new使用HTTP GET,这就是它直接进入重定向的原因。 :create接受HTTP POST。所以,相反,我有以下内容:
def create
begin
user = User.find_by_email(params[:email])
if user
UserPermission.create(:user_id => user.id,
:permission => UserPermission::SUPPORT,
:creator => current_user)
end
rescue ActiveRecord::RecordNotFound
flash[:warn] = 'User not found'
end
redirect_to admin_support_users_path, notice: 'Support user added.'
end
def new
render 'new.html.arb', :layout => 'active_admin'
end
这正确地创建了一个漂亮的主动管理表单,接受电子邮件参数。