양식에 숨겨진 필드를 사용하여 값이 1 인 매개 변수를 내 컨트롤러의 메서드에 전달하면 장바구니의 주문 항목 수량에 값이 추가됩니다. 바인딩 핑으로 얻는 것을 확인하면 params
에 대해 : update_by 매개 변수가 전달하려고 시도 중입니다. "order_items=>{"update_by"=>"1"}
입니다. 그래서, params[:update_by]
을 사용하는 메소드에서 param을 잡으려고 할 때, nil (또는 .to_i
이면 0)을 얻습니다. 왜 param은 객체입니까?Param 숨겨진 필드를 통과하려고하면 객체로 표시됩니까?
내가 내 방법의 다른 varaiables에서 원하는 데이터를 잡는 오전 컨트롤러
def update
@order = current_order
@item = OrderItem.find(params[:id])
@item.update(:quantity=> @item.quantity + params[:update_by].to_i)
@item.save!
redirect_to cart_path
end
private
def item_params
params.require(:order_item).permit(:quantity, :product_id,
:user_id, :update_by)
end
end
의 형태
<% if @order_items.any? %>
<% @order_items.each do |item| %>
<%= form_for item do |f| %>
<%= f.hidden_field :update_by, value: 1 %>
<%= button_tag type:"submit", class: "cart_quantity_button"
do %>
<i class="fa fa-plus-circle" aria-hidden="true"></i>
<% end %>
<% end %>
<% end %>
그리고 방법에 대한 HTML을 참조하십시오. 문제는 내가 값을 붙잡을 수 없다는 것입니다 : update_by 그것이 객체라면, 맞습니까? 더 자세한 정보가 필요하면 알려주세요. 감사!
은 와우, 많은 이해된다. 나는 item_params에서': update_by'를 제거하고'@ item.update (: quantity => params [: button]) '를 대신 사용하여 메소드의 수량을 업데이트한다는 것을 잊어 버렸습니다. 누군가가 그것에 대해 혼란스러워했다. –