2017-12-06 3 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

사용자로부터 인디 스를 입력하고 싶습니다. 맞습니까? –

+0

이 예제에서는 : user_input == "some string"이고, 컨트롤러에서'index'는 폼에서 전달해야하는 값입니다. –

관련 문제