2016-10-15 3 views
0

저는 완전한 루비 놈입니다. 제 생각에 제게 5처럼 저에게 설명해주십시오. 나는 7 개의 f.number_fields를 가진 폼을 가지고 있습니다. 나는 그것들을 더하고 그것을 안으로 저장하고 싶다 : 합계.Ruby에서 f.number_field에 여러 사용자 입력을 추가하려면 어떻게해야합니까?

 <%= f.label :icecream %><br> 
     <%= f.number_field :icecream %> 

     <%= f.label :cake %><br> 
     <%= f.number_field :cake %> 

그래서이 경우에는 내가로부터 사용자 입력을하고 싶습니다 : 여기에 내가 무슨 말의 예입니다 아이스크림 : 케이크와 그들을 추가에 저장 : 총,하지만 어떻게 것 내가 그랬어? 그런 다음 데이터베이스에 저장됩니다.

+0

당신이 후 제출 같은 페이지에 결과를보고 싶어하거나이 데이터베이스에 저장됩니다 있습니까? .. 전체 양식을 추가 할 수 있습니까? – Zero

+0

네, 제출을 클릭하면 데이터 박스에 저장 될 것입니다 – Cactus

+0

모델과 컨트롤러 메소드를 추가하십시오. – Zero

답변

0

좋아요. 모델과 컨트롤러를 볼 때 양식이 있습니다. 여러분은 합계에 대한 새로운 견해에있는 양식을 채울 것입니다. 컨트롤러 버튼 create에 요청할 제출 버튼을 누르십시오. create 작업에서 total_params 메서드를 호출합니다.이 메서드는 params 해시 (뷰에서 양식에 있던 모든 정보가 포함되어 있음)를 확인하여 :total 키의 값이 있는지 확인합니다. :cake:icecream이 전달 될 수 있습니다 (이것은 강력한 매개 변수 또는 흰색 목록 매개 변수를 호출합니다). private 키워드는 컨트롤러 외부에서 total_params 작업에 직접 액세스하지 않기 때문입니다. 그런 다음 create 메서드에서 each 모양은 total_params에 대한 호출에서 반환 된 해시 값을 반복하고 total_value 변수에 추가합니다. 각 루프가 완료 한 Total 레코드는 total 열 값이 icecreamcake의 합계 인 데이터베이스에 작성됩니다. 이것은 대략 당신이 값을 저장하는 방법에 관한 것입니다.

보기

#app/views/totals/new.html.erb 
    <%= form_for @total, url: {action: "create"} do |f| %> 
    <%= f.label :icecream %><br> 
    <%= f.number_field :icecream %> 

    <%= f.label :cake %><br> 
    <%= f.number_field :cake %> 
    <%= f.submit %> 

컨트롤러

#app/controllers/totals_controller.rb 

    class TotalsController << ApplicationController 

    def create 
     total_value = 0 

     total_params.each do |k, v| 
     total_value += v 
     end 
     Total.create(total: total_value) 
    end 

    private 

    def total_params 
     params.require(:total).permit(:cake, :icecream) 
    end 
    end 

모델

#app/models/total.rb 

class Total << ActiveRecord::Base 
end 
관련 문제