1

simple_form を使用しています。選択メニューとテキスト入力を使用して、のようなものを作成するにはどうすればよいですかSelect or add another

アプリは、選択メニューまたはテキスト入力から 1 つの値のみを受け取ります。

ユーザーの混乱を避けるために、両方ではなくどちらか一方を検証することもお勧めします。

4

2 に答える 2

0

これを解決するには、JavaScript と Ruby を組み合わせて使用​​してみてください。ユーザーがドロップダウンで利用可能なものとは異なる値を入力したい場合は、JS にその入力のキーダウン イベントをリッスンさせ、ドロップダウンをクリアする必要があります。

$(".input_field").bind('keydown', function() {
  $(".select_field").val('0') // this should be a default blank value
});

これにより、ユーザーが入力したときに選択がクリアされます。同様に、ユーザーがドロップダウンから選択したときに入力をクリアしたいと思いませんか?

$(".select_field").change(function() {
  // Let's only clear the input field if the value is not the default null value
  if ( $(this).val() != 0 ) {
    $(".input_field").val('');
  }
});

これにより、フロントエンドの対話が処理されます。コントローラーでは、追加のロジックを実行する必要があります。

def create
  object.new(...)
  if params[:select] and params[:input]
    # Overwrite the select with the input value
    object.attribute = params[:input]
  end
  object.save
end

入力値が選択に取って代わることを想定しているため、それらが最も送信されている場合は、選択値を入力値で上書きしてから、オブジェクトの保存を続行できます。

これはあなたが探しているものですか?入力された値が関係を持つ新しいオブジェクトを作成すると想定されていたかどうかは不明です。お役に立てれば。

于 2013-04-10T22:39:42.887 に答える