컨트롤러를 사용하여 어레이 매개 변수를 어떻게 저장할 수 있습니까?

Carlos Morales 자리 표시 자 이미지

내 컨트롤러가 배열 매개 변수를 올바르게 저장하지 않습니다.

데이터 베이스

|categories|
 |id| |name|
   1    HW
   2    SF
   3    PC

|products|
 |id| |amount| |category_id|

그러나 테이블을 저장 한 후 배열 PARAMS을 저장해야합니다 '제품'은 다음과 같이 될 것입니다 데모

|products|
 |id| |amount| |category_id|
   1     100          1
   2     200          2
   3     300          3

제어 장치:

def new
  @categories = Category.all
  @obj_product = Product.new(params[:obj_product])
end

def create
  params[:obj_product].each do |key , value| 
    o = FlowBudgetDetail.new( :amount => value , :category_id => key)
    o.save
  end

  if o.save()
    redirect_to :action=>"index"
  else
    redirect_to :action=>"new"
  end
end

전망:

<% form_for :obj_product, :url => {:action=>'create'} do |f| %>
   <% @categories.each do |category| %>
     <%= f.text_field :category_id , :name => "obj_product[array_#{category.id}][category_id]"%>
     <%= f.text_field :amount      , :name => "obj_product[array_#{category.id}][amount]" %>
   <% end %>
<$ end %>

로그에 모든 매개 변수가 표시되지만 하나의 삽입 만 생성됩니다.

Processing ProductController#create (for 127.0.0.1 at 2015-08-07 17:23:26) [POST]
Parameters: {"commit"=>"Save", "obj_product"=> {"array_1"=>{"amount"=>"100","category_id"=>"1"},"array_2"=>{"amount"=>"300","category_id"=>"2"},"array_3"=>{"amount"=>"300","category_id"=>"3"} }}
INSERT INTO `products` (`category_id`, `amount`) VALUES( 0, 1)
INSERT INTO `products` (`category_id`, `amount`) VALUES( 0, 1)
INSERT INTO `products` (`category_id`, `amount`) VALUES( 0, 1)

이것은 이것을 저장해야합니다 :

INSERT INTO `products` (`category_id`, `amount`) VALUES( 1, 100)
INSERT INTO `products` (`category_id`, `amount`) VALUES( 2, 200)
INSERT INTO `products` (`category_id`, `amount`) VALUES( 3, 300)

잘못된 정보를 저장 (잘못된 매개 변수)

누군가 나를 도울 수 있습니까?

Beartech

한 번에 여러 레코드를 만들려고하지만 한 번의 호출을 사용하여 만들려고하는 new 것이 중요합니다 !!! 당신의 Controller#new행동에서 당신은 하나의 객체에 대해서만 DB를 요청합니다. @categories필요한 수의 루프를 수행 하기 위해 사용하기 때문에 필요한 양식 필드를 얻는 것이 좋습니다 . 하지만 당신의 Controller#create행동에서 당신은 :

 obj_product.new(params[:obj_product]) 

시도해 볼 수 있습니다.

 obj_product.create(params[:obj_product]) 

그러나 이것은 매개 변수가 다음과 같기 때문에 작동하지 않습니다.

"flow_budget_detail"=> {"1"=>{"amount"=>"100"},"2"=>{"amount"=>"300"},,"2"=>{"amount"=>"300"} }

Controller#new작업을 수행 하려면 작업을 수행 하기 전에 모든 @obj_products를 만들어야합니다 . 이렇게하면 3 개의 카테고리가 연결되어있는 경우 3 개의 Product 객체를 양식에 전달하면 매우 다른 매개 변수 해시가 반환됩니다. params 해시는 다음과 같아야합니다.

[{"category_id" => "1", "amount"=>"100"},{"category_id" => "2", "amount"=>"200",...}]

그러나 컨트롤러와 양식을 다시 작성하지 않으면 작동하지 않습니다. 다음과 같이 할 수 있습니다.

def create
  if FlowBudgetDetail.transaction do
       params["flow_budget_details"].each do |k,v|
         new_record = FlowBudgetDetail.new("category_id" => k, "amount" => v)
         new_record.save
       end
   end
      redirect_to :action=>"index"
   else
     redirect_to :action=>"new"
   end
end

좋아요, 이것은 그대로 작동합니다. params["flow_budget_details"].each잘못된 결과를 얻는 이유 중 하나이기 때문에 키를 변경하지 마십시오 . 또한`.new ( "category_id"=> k, "amount"=> v) '의 순서를 변경하지 마십시오. 지난 시간에 제가 말한 것에서 거꾸로 만들었고 결과도 망 쳤기 때문입니다.

정확히이 작업을 수행하고 결과를 게시하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C #의 입력을 위해 개체 매개 변수를 사용하여 Oracle 저장 프로 시저를 어떻게 호출 할 수 있습니까?

분류에서Dev

laravel의 컨트롤러에 추가 매개 변수를 어떻게 전달할 수 있습니까?

분류에서Dev

zk에서이 매개 변수를 어떻게 사용할 수 있습니까?

분류에서Dev

매개 변수 변수를 다른 변수에 저장하지 않고 함수 외부에서 어떻게 사용할 수 있습니까?

분류에서Dev

컨트롤러에서 두 개의 "show"메소드를 어떻게 사용할 수 있습니까?

분류에서Dev

find에서 여러 매개 변수를 어떻게 사용할 수 있습니까?

분류에서Dev

html에서 컨트롤러에서 오는 각도 변수를 어떻게 사용할 수 있습니까?

분류에서Dev

AngularJs ControllerAs 접근 방식을 사용하여 자식 컨트롤러에서 부모 컨트롤러의 함수를 어떻게 호출 할 수 있습니까?

분류에서Dev

어떻게 autowire가 ConversionService를 사용하는 컨트롤러에 대한 @WebMvcTest를 사용할 수 있습니까?

분류에서Dev

컨트롤러 인덱스 함수에서 모델의 함수로 매개 변수를 어떻게 전달할 수 있습니까? 라 라벨

분류에서Dev

CodeIgniter의 후크에 대한 매개 변수 / 컨트롤러를 어떻게 사용합니까?

분류에서Dev

MVC 컨트롤러에서 매개 변수가있는 데이터베이스 '선택'저장 프로 시저를 어떻게 호출합니까?

분류에서Dev

템플릿 매개 변수 유형의 변수를 어떻게 사용할 수 있습니까?

분류에서Dev

array_map ()에서 콜백 함수에 매개 변수 / 인수를 어떻게 사용할 수 있습니까?

분류에서Dev

Swift에서 함수 매개 변수를 사용하여 일반 함수에 대한 호출을 어떻게 명확하게 할 수 있습니까?

분류에서Dev

.net core web api-컨트롤러가 매개 변수를 미들웨어에 전달할 수 있습니까?

분류에서Dev

$ routeProvider의 컨트롤러에 매개 변수를 어떻게 전달합니까?

분류에서Dev

컨트롤러의 URL에서 매개 변수 값에 어떻게 액세스 할 수 있습니까?

분류에서Dev

Ajax URL을 사용하여 두 개의 매개 변수를 어떻게 보낼 수 있습니까?

분류에서Dev

xargs에서 한 번에 두 개의 매개 변수를 어떻게 사용할 수 있습니까?

분류에서Dev

내 js 파일에 스크립트 매개 변수를 어떻게 사용할 수 있습니까?

분류에서Dev

(3 개) 매개 변수를 사용하여 어떻게 하한에서 상한으로 변경할 수 있습니까?

분류에서Dev

Alamofire 매개 변수로 어레이를 어떻게 사용합니까?

분류에서Dev

AutoHotKey로 여러 개의 개별 텍스트를 어떻게 저장할 수 있습니까?

분류에서Dev

컨테이너 뷰 컨트롤러에서 어떤 일이 발생하면 어떻게 뷰 컨트롤러를 업데이트 할 수 있습니까?

분류에서Dev

매크로를 사용하여 숫자를 텍스트로 어떻게 변환 할 수 있습니까?

분류에서Dev

다양한 매개 변수가있는 함수에 데코레이터를 어떻게 사용할 수 있습니까?

분류에서Dev

getApplicationJniMethodId를 사용하여 int를 매개 변수로 어떻게 보낼 수 있습니까?

분류에서Dev

3 개의 매개 변수로 sequel ORM을 사용하여 full_text_search를 어떻게 수행 할 수 있습니까?

Related 관련 기사

  1. 1

    C #의 입력을 위해 개체 매개 변수를 사용하여 Oracle 저장 프로 시저를 어떻게 호출 할 수 있습니까?

  2. 2

    laravel의 컨트롤러에 추가 매개 변수를 어떻게 전달할 수 있습니까?

  3. 3

    zk에서이 매개 변수를 어떻게 사용할 수 있습니까?

  4. 4

    매개 변수 변수를 다른 변수에 저장하지 않고 함수 외부에서 어떻게 사용할 수 있습니까?

  5. 5

    컨트롤러에서 두 개의 "show"메소드를 어떻게 사용할 수 있습니까?

  6. 6

    find에서 여러 매개 변수를 어떻게 사용할 수 있습니까?

  7. 7

    html에서 컨트롤러에서 오는 각도 변수를 어떻게 사용할 수 있습니까?

  8. 8

    AngularJs ControllerAs 접근 방식을 사용하여 자식 컨트롤러에서 부모 컨트롤러의 함수를 어떻게 호출 할 수 있습니까?

  9. 9

    어떻게 autowire가 ConversionService를 사용하는 컨트롤러에 대한 @WebMvcTest를 사용할 수 있습니까?

  10. 10

    컨트롤러 인덱스 함수에서 모델의 함수로 매개 변수를 어떻게 전달할 수 있습니까? 라 라벨

  11. 11

    CodeIgniter의 후크에 대한 매개 변수 / 컨트롤러를 어떻게 사용합니까?

  12. 12

    MVC 컨트롤러에서 매개 변수가있는 데이터베이스 '선택'저장 프로 시저를 어떻게 호출합니까?

  13. 13

    템플릿 매개 변수 유형의 변수를 어떻게 사용할 수 있습니까?

  14. 14

    array_map ()에서 콜백 함수에 매개 변수 / 인수를 어떻게 사용할 수 있습니까?

  15. 15

    Swift에서 함수 매개 변수를 사용하여 일반 함수에 대한 호출을 어떻게 명확하게 할 수 있습니까?

  16. 16

    .net core web api-컨트롤러가 매개 변수를 미들웨어에 전달할 수 있습니까?

  17. 17

    $ routeProvider의 컨트롤러에 매개 변수를 어떻게 전달합니까?

  18. 18

    컨트롤러의 URL에서 매개 변수 값에 어떻게 액세스 할 수 있습니까?

  19. 19

    Ajax URL을 사용하여 두 개의 매개 변수를 어떻게 보낼 수 있습니까?

  20. 20

    xargs에서 한 번에 두 개의 매개 변수를 어떻게 사용할 수 있습니까?

  21. 21

    내 js 파일에 스크립트 매개 변수를 어떻게 사용할 수 있습니까?

  22. 22

    (3 개) 매개 변수를 사용하여 어떻게 하한에서 상한으로 변경할 수 있습니까?

  23. 23

    Alamofire 매개 변수로 어레이를 어떻게 사용합니까?

  24. 24

    AutoHotKey로 여러 개의 개별 텍스트를 어떻게 저장할 수 있습니까?

  25. 25

    컨테이너 뷰 컨트롤러에서 어떤 일이 발생하면 어떻게 뷰 컨트롤러를 업데이트 할 수 있습니까?

  26. 26

    매크로를 사용하여 숫자를 텍스트로 어떻게 변환 할 수 있습니까?

  27. 27

    다양한 매개 변수가있는 함수에 데코레이터를 어떻게 사용할 수 있습니까?

  28. 28

    getApplicationJniMethodId를 사용하여 int를 매개 변수로 어떻게 보낼 수 있습니까?

  29. 29

    3 개의 매개 변수로 sequel ORM을 사용하여 full_text_search를 어떻게 수행 할 수 있습니까?

뜨겁다태그

보관