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 回答