0

성분으로 냉장고 모델 객체를 저장하는 check_box_tag를 구현하려고합니다. 두 모델은 has-many-through 관계 (FridgeIngredient 모델)를 통해 연결됩니다. 각 냉장고가 사용자에게 속해 있다는 점은 주목할 가치가 있습니다.이 냉장고는 내가이 코드가 이전에 저에게 일한 곳에서 볼 수있는 유일한 차이점이기 때문에 여기에서 문제를 일으킬 수도 있습니다.check_box_tag 포함하는 양식 - 다스 스루 관계를 업데이트하지 않는 매개 변수

이전에 has-many-through 관계에 대한 체크 박스의 성공적인 목록을 만들었지 만,이 경우에는 작동하지 않습니다. (이러한 모델에 맞게) 다음 폼 코드는 다른 곳에서 일 것입니다,하지만 지금은 냉장고 업데이트 실패 :이 올바른 PARAMS처럼 나에게 어떻게 보이는지 제공

<%= form_for(@fridge) do |f| %> 

    <!-- a debug column for testing --> 
    <%= f.label :debug %> 
    <%= f.text_field :debug 

    <!-- the checkboxes --> 
    <h2>Add ingredients to your Fridge</h2> 
     <div> 
      <% hidden_field_tag "fridge[ingredient_ids][]", nil %> 
      <% Ingredient.all.each do |ingredient| %> 
      <%= check_box_tag "fridge[ingredient_ids][]", ingredient.id, 
       @fridge.ingredient_ids.include?(ingredient.id), id: dom_id(ingredient) %> 
      <%= label_tag dom_id(ingredient), ingredient.name %><br> 
      <% end %> 
     </div> 
     <%= f.submit "Update" %> 
<% end %> 

를, 그리고 같은 '디버그'필드 업데이트 해야합니다 :

fridge: !ruby/hash:ActionController::Parameters 
     debug: '' 
     ingredient_ids: 
     - '1' 
     - '2' 
    commit: Update 
    controller: fridges 
    action: update 
    id: '2' 

@fridge 변수가 잘못되었을 수 있습니까? 그것은 그것을 시험 할 때 냉장고의 정확한 경우를 집어 올리는 것처럼 보입니다. 현재 :

@fridge = current_user.fridge #using my auth method, and unavailable to 

그러나 양식을이 프로젝트에 제출하면 냉장고에 재료가 추가되지 않습니다. has-many-through는 정상적으로 동작하며, Rails 콘솔에서 Ingredients를 추가하고 액세스 할 수 있습니다.

마지막으로 콘솔을 통해 추가 된 냉장고에있는 모든 성분에 대한 체크 박스를 선택하는 것은 중요합니다 (예 : 콘솔을 통해 냉장고에 스테이크를 추가하면 페이지의 체크 박스 목록에 체크 됨) .

도움 주셔서 감사합니다.

답변

1

해결책을 찾았습니다. 매개 변수가 지워지지 않았습니다. 컨트롤러의 강력한 매개 변수를 구성하면 이동이 편리했습니다.

def fridge_params 
    params.require(:fridge).permit(:debug, { :ingredient_ids => [] }) 
end