ActiveAdmin belongs_to 关系输入基于在 id 以外的属性上使用字符串框
ActiveAdmin belongs_to relationship input based using string box on attribute other than id
我在标准 rails 应用程序中使用 activeadmin。
我有商品belongs_to 用户关系
在 admin#items 表单上(编辑和新建)而不是 select 包含所有用户电子邮件等,我想要一个字符串文本字段,管理员可以在其中输入用户电子邮件而不是一个 id 或 selecting 一个从下拉列表中。
保存时我想验证该电子邮件是否属于某个用户,如果属于该用户,则将该项目分配给该用户。
我有
f.inputs "Item Details" do
f.input :user, as: :string
end
然而,这在视图中显示了用户对象,我想接收一封电子邮件。
或
f.inputs "Item Details" do
f.input :user_id, as: :string
end
在我想要电子邮件时输入 ID。
首先我添加了一个不是对象属性的参数,在本例中是对象的用户电子邮件。
f.input :user_email, as: :string, :input_html => { :value => f.object.user.try(:email) }
然后在更新和编辑方法的控制器中,我处理了该参数的处理。此外,为了避免模型出现问题,我在调用 super 之前删除了参数。这会通过用户的电子邮件将用户分配给该项目。
def update
user = User.where(email: params[:item][:user_email]).first
if user
params[:item][:user_id] = user.id.to_s
params[:item].delete(:user_email)
super
else
flash[:notice] = "That email does not belong to a valid user"
redirect_to admin_group_path(params[:id])
end
end
我在标准 rails 应用程序中使用 activeadmin。
我有商品belongs_to 用户关系
在 admin#items 表单上(编辑和新建)而不是 select 包含所有用户电子邮件等,我想要一个字符串文本字段,管理员可以在其中输入用户电子邮件而不是一个 id 或 selecting 一个从下拉列表中。
保存时我想验证该电子邮件是否属于某个用户,如果属于该用户,则将该项目分配给该用户。
我有
f.inputs "Item Details" do
f.input :user, as: :string
end
然而,这在视图中显示了用户对象,我想接收一封电子邮件。
或
f.inputs "Item Details" do
f.input :user_id, as: :string
end
在我想要电子邮件时输入 ID。
首先我添加了一个不是对象属性的参数,在本例中是对象的用户电子邮件。
f.input :user_email, as: :string, :input_html => { :value => f.object.user.try(:email) }
然后在更新和编辑方法的控制器中,我处理了该参数的处理。此外,为了避免模型出现问题,我在调用 super 之前删除了参数。这会通过用户的电子邮件将用户分配给该项目。
def update
user = User.where(email: params[:item][:user_email]).first
if user
params[:item][:user_id] = user.id.to_s
params[:item].delete(:user_email)
super
else
flash[:notice] = "That email does not belong to a valid user"
redirect_to admin_group_path(params[:id])
end
end