2016-04-15 4 views
0

標準レールアプリでactiveadminを使用しています。id以外の属性の文字列ボックスを使用してActiveAdmin belongs_to関係の入力を入力

は、私が代わりに管理者が入力できる文字列のテキストフィールドを持つようにしたいなど、代わりにすべてのユーザの電子メールを選択したの(編集および新しい)管理#項目フォームでユーザ関係

belongs_toのアイテムを持っていますIDの代わりにユーザーの電子メールを送信するか、ドロップダウンからメールを選択します。

保存時に、電子メールがユーザーに属していることを確認し、そのユーザーにアイテムを割り当てます。

は、私は、ビュー内のユーザーオブジェクトを示しただし

f.inputs "Item Details" do 
    f.input :user, as: :string 
end 

を持っていると私は、電子メールで撮りたいです。私はメールをしたいとき

それとも

f.inputs "Item Details" do 
    f.input :user_id, as: :string 
end 

はIDになります。

答えて

0

まずオブジェクト属性ではないパラメータを追加しました。この場合、オブジェクトのユーザーの電子メールです。

f.input :user_email, as: :string, :input_html => { :value => f.object.user.try(:email) } 

次に、更新と編集のためのコントローラで、私はそのパラメータの処理を処理しました。また、モデルの問題を避けるためにスーパーが呼び出される前に、パラメータを削除しました。これにより、ユーザーの電子メールを介してユーザーがアイテムに割り当てられます。

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 
関連する問題