2017-12-06 7 views
0

フォームからユーザー入力を収集し、その値をコントローラの配列変数に結合しようとしています。railsコントローラの配列のインデックスにparamsを渡します。

コントローラ

MyController < ApplicationController 
    def con_action 
    @array_var = Array.new(n) 
    @array_var[index] = params[:user_input] 
    end 
end 

<%= form_for :doesntmatter do |f| %> 
    <%= f.text_field :user_input, placeholder: 'input for index 0' 

    <%= f.text_field :user_input, placeholder: 'input for index 1' 
<% end %> 

もarray.sizeは常に、それが動的作ることは理想的であるように変更されます。

私はそれがより理にかなってので、私の問題は、私はその配列のどのインデックス分からないということです、それを編集した:、USER_INPUTが属すると、フォームが表示あなたの中にそのインデックス番号

答えて

2

を提供持っている必要がありますが
を整数に変換するにはto_i機能を使用し、あなたのコントローラにあなたがのparamsであなたが望む結果を得るでしょう。この

<%= form_tag(controller: : MyController, action: : con_action) do %> 
     <%5.time do |n|%> 
    <%= text_field_tag "user_input_"+n.to_s, nil,placeholder: "something" %> 
     <%end%> 
    <%submit_tag%> 
    <%end%> 

を使用

def con_action 
     @array_var = Array.new(n) 
     5.times do |n| 
     @array_var[n] = params['user_input_'+n.to_s] 
     end 
    end 

P. mycontroller#con_actionの投稿ルートがあることを確認してください。

+0

ありがとうございますが、私の問題はどのインデックスを動的に指定するかです。私は設定するインデックスが何であるか常に知っているわけではないので、コントローラに '@array_var [index] 'のようなハードコードを書くことはできません。 –

+0

Uはユーザからの入力としてインデックスを取得しますか? –

+0

いいえ、この例では:user_input == "some string"です。コントローラの 'index'は、フォームから渡される必要がある値です。 –

関連する問題