2014-11-10 9 views
0

여기 내 HAML 코드 :선택한 값을 레일스 폼에 넣는 방법은 무엇입니까?

-if params[:product_id] 
    =select_tag 'product', 
       options_from_collection_for_select(Product.all, :id, :name), 
       placeholder: "Product", required: true, 
       value: Product.find(params[:product_id]).name 
-else 
    =select_tag 'product', 
       options_from_collection_for_select(Product.all, :id, :name), 
       :prompt => 'Select', placeholder: "Product", required: true 

문제는 내가 요소 검사 할 때 값이 좋은 것입니다 :

<select id="product" name="product" placeholder="Product" required="required" value="Product 2"> 
     <option value="1">Product 1</option> 
     <option value="2">Product 2</option> 
     <option value="3">Product 3</option></select> 

그 좋은 솔기하더라도

, 선택이 아닌 값에 있습니다했습니다 "Product 2", 요소의 값은 yes이지만 선택한 값은 "Product 1"입니다.

난 이유를 모르겠어 그리고 내가 뭔가 x)는

편집 덤비는거야 확신 :

value: Product.find(params[:product_id]).id 
value: Product.find(params[:product_id]).id.to_i 

변경 이런 종류의 문제에 아무것도 변경되지 않습니다

+0

: 그냥 미리 선택된 값이 options_from_collection_for_select하는 마지막 옵션으로 통과 될 필요가 있음을 깨달았 .name에 의해 .name이 변경되었지만, 요소를 검사 할 때 "Product 2"대신에 value = "2"를 제외하고 아무것도 변경되지 않습니다. – Charlon

+0

다른 생각을해야합니다. 죄송합니다! –

답변

0

값 옵션을 전달하면 내용이 아닌 옵션 태그의 값 특성과 비교됩니다.

value: params[:product_id].to_i 

편집에 값 옵션을 변경해보십시오 :

=select_tag 'product', 
      options_from_collection_for_select(Product.all, :id, :name, params[:product_id].to_i), 
      placeholder: "Product", required: true 

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html

+0

그것은 아무것도 변경하지 않고 값은 "2"로 유지되고 시각적으로 동일합니다 ("제품 1") – Charlon

+0

감사합니다. – Charlon