0

ユーザーが複数のレコードを入力できるRailsのフォームがあります。ユーザーが事実上無制限の数のレコードを持つことができる JavaScript をいくつか作成します。私のハッシュは次のようになります。

inputA_1, inputB_1, inputC_1
inputA_2, inputB_2, inpuctC_2

私のコントローラーでは、whileループを実行して行を反復処理し、データベースに保存したいと考えています。次に例を示します。

z = 0
i = 1
while z = 0
  @inputA = [:params][:inputA_i]
  @inputB = [:params][:inputB_i]
  @inputC = [:params][:inputC_i]
  if @inputA.nil?
     z=1
  else
  @record = [inputA: @inputA, inputB: @inputB, inputC: @inputC]
  @record.save
  i = i + 1
  end
end

i問題は、 の " " を:inputA_iの値にする方法がわからないことですi

その中で何か助けていただければ幸いです。

4

3 に答える 3

2

文字列に補間iし、文字列を次のように変換しますsymbol

@inputA = [:params]["inputA_#{i}".to_sym]
@inputB = [:params]["inputB_#{i}".to_sym]
@inputC = [:params]["inputC_#{i}".to_sym]
于 2012-09-18T18:39:56.117 に答える
0

あなたはこのような文字列を作ることができます

"hello #{name}"

また

"%s means %s" %["how do you do?", "hello"]

それが役立つことを願っています!

于 2012-09-19T10:51:38.920 に答える
0

代わりに、フォーム要素の配列シリアル化を提案できますか?:

<form>
  <input type="hidden" name="inputA[]" value="Hi">
  <input type="hidden" name="inputA[]" value="There">
  <input type="hidden" name="inputA[]" value="Sir">
</form>

その HTML を含むフォームが送信されると、値は params ハッシュの配列に変換されます。

params[:inputA] #=> ["Hi", "There", "Sir"]

したがって、JavaScript がしなければならないことは、同じ名前で末尾が[]. コントローラーでのこれらの入力の処理は、はるかに簡単です。

params[:inputA].each do |value|
  @record = Record.new
  @record.inputA = value
  @record.save
end
于 2012-09-18T18:46:32.387 に答える