0

だから私はRailsで非常に基本的なフォームを持っています。しかし、いくつかの機能を追加することにしました。コンテキストの少し。
男性か女性かを選択すると、フォームが何らかのフィールドを生成します。V1で既に存在していたフィールドがありましたが、javascriptで生成するとDBに保存されません。理由がよくわかりません。ここにいくつかのコードがあります。

コントローラ

def create
  @pokemon = Pokemon.new(params[:pokefuck])

  respond_to do |format|
    if @pokemon.save
      format.html { redirect_to '/pokemons', notice: 'pokemon was successfully created.' }
      format.json { render json: @pokemon, status: :created, location: @pokemon }
    else
      format.html { render action: "new" }
      format.json { render json: @pokemon.errors, status: :unprocessable_entity }
    end
  end
end

意見

活躍するオリジナルフィールド

<%= f.select "size", options_for_select(size, @pokemon.size) %>

サイズはハッシュ

動作しないものを作成しました

var s = document.createElement("select");
s.name = "po";
s.id = "pokemon_size";
sex.appendChild(s);
for(i in size) {
  document.formName.po.options[i] = new Option(size[i], size[i]);
}

新しい要素の名前が pokemon[size] ではないためだと思っていましたが、これを使用すると、行 document.formName.pokemon[size].options[i] が機能しなくなりました。

だから私はこれをどのように機能させることができるかを見るのにちょっと苦労しています。ありがとう!

4

2 に答える 2

1

フィールドの名前は、あなたの params ハッシュに入れる必要がありますpokefuck

pokefuck[size]フォーム要素の名前にする必要があります。送信するフォーム要素にフォーム要素を追加します。

于 2013-04-12T17:40:42.507 に答える
1

コントローラ コードから、フォーム フィールドが "pokefuck" に名前空間化されていると仮定すると、選択した名前を "pokefuck[size]" にし、フォームの要素コレクションでその名前を参照する必要があります。

var s = document.createElement("select");
s.name = "pokefuck[size]";
s.id = "pokemon_size";
sex.appendChild(s);
for(i in size) {
  document.formName.elements['pokefuck[size]'].options[i] = new Option(size[i], size[i]);
}
于 2013-04-12T22:02:24.893 に答える