1

이 코드 조각에 대해 다른 질문을 게시하게되어 죄송합니다.하지만 나는 고통스러워하는 초보자입니다. 내 질문은, DB의 기본값이 존재할 때 세 번째 라디오 버튼을 선택하도록하고 싶습니다. 다른 말로하면, 나는 "true", "false", "either"의 3 개의 버튼을 가지고 있습니다. 아무 것도 선택하지 않았거나 사용자가 "어느 쪽인가"버튼을 선택한 경우, 그 선택을 표시하고 싶습니다. 현재 사용자가 "true"또는 "false"를 선택하면 해당 선택 사항이 올바르게 반영됩니다. 양식을 저장하거나 다시 가져올 때 반영되지 않는 세 번째 옵션이 선택되었습니다. 여기에 내 코드가있다 :에 문제가있는 곳 : checked radio_button - rails

<div class="new-partner-form"> 
<%= form_for [:admin, matching_profile.partner, matching_profile], :html => {:id => "edit_profile", :multipart => true} do |f| %> 
    <div class="rounded-block semi-wide clear"> 
    <h4>Military Service</h4> 
    <%= f.radio_button :served_in_us_army, false %> 
    <%= label :served_in_us_army, 'NO', {:style => 'display:inline'} %> 
    <%= f.radio_button :served_in_us_army, true %> 
    <%= label :served_in_us_army, 'YES', {:style => 'display:inline'} %> 
    <%= f.radio_button :served_in_us_army, " ", { :checked => (:served_in_us_army.nil? or :served_in_us_army.blank? ? true : false) } %> 
    <%= label :served_in_us_army, 'Either', {:style => 'display:inline'} %> 
    <%= f.error_message_on :served_in_us_army %> 
    </div> 

편집 : 또한 중괄호없이 ": checked"옵션을 시도했음을 유의해야한다. 아직도 운이 없다.

<div class="rounded-block semi-wide clear"> 
    <h4>Military Service</h4> 
    <%= f.radio_button :served_in_us_army, false %> 
    <%= label :served_in_us_army, 'NO', {:style => 'display:inline'} %> 
    <%= f.radio_button :served_in_us_army, true %> 
    <%= label :served_in_us_army, 'YES', {:style => 'display:inline'} %> 
    <%= f.radio_button :served_in_us_army, " ", :checked => matching_profile.served_in_us_army.nil? %> 
    <%= label :served_in_us_army, "Either", {:style => 'display:inline'} %> 
    <%= f.error_message_on :served_in_us_army %> 
</div> 

답변

1

나는 당신이이 작업을 수행하지 않는 것이 좋습니다 것입니다 :이 최선의 해결책이지만, 여기 내가 문제를 해결 한 방법 인 경우

확실하지 않음 (내가 필드 값이 아닌 열 이름이 필요) 보기. 그것은 비즈니스 로직입니다.

컨트롤러에서 또는 모델에서 더 잘 수행하십시오.

이 경우 컨트롤러가 새롭고 (특히) 편집 작업을 원할 수도 있고 그 정보에 대한 인스턴스 변수를 만들 수도 있습니다. 데이터베이스에서 값을 선택하고, 수동 옵션을 추가하고, if-then을 사용하여 객체를 올바르게 설정할 수 있습니다.

(항상) 가장 좋은 점은 모델 수준에서이 문제를 해결하는 것입니다. Military Service의 기존 값을 살펴본 후 그 값에 대한 정보를 반환하는 모델 방법을 사용할 수 있습니다. 부울 값이 크면 true/false 값을 반환 할 수도 있습니다. .save의 작업을 수행하기 전에 특성을 올바르게 준비하십시오 (db와 일치하도록).

+0

저는 아직 안개가 듭니다. 예를 들어, serve_in_us_army (아마도'attr_accessor : served_in_us_army'와 같은 것을 할 수 있습니다)의 값을 반환하는 메소드를 메소드에 추가한다고 가정 해보십시오. 뷰에 값이 무엇인지 확인하고 값에 따라 버튼이 선택되었는지 확인해야 할 필요가 없을까요? – Ramy