2012-10-12 3 views
1

누구나 collection_select의 필드 이름에 해당 값의 이름이 아닌 텍스트 메서드의 이름을 지정하는 방법을 알고 있습니까?레일 : collection_select 명명 방법

나는 print_100, print_200print_500을 받고 필요시 더 추가 할 계획입니다. 선택 상자의 값을 부터 시작하여 print_으로 시작하는 필드로 변경하려면 선택 상자에 100, 200500과 같은 옵션이 있어야합니다.

f.collection_select(:print_quantity, Billing.all, :print_100, :print_100) 

의견이 있으십니까? 건배.

답변

1

@DavidDraughnn에게 감사의 말을 전합니다. 나는 따라서, 관련 도우미에서하는 방법을 썼다 :

def get_quantities 
    @quantities = {} 
    Billing.column_names.each do |a| 
    if a.match(/^print_/) 
     @quantities[a.delete "print_"] = a.delete "print_" 
    end 
    end 
    return @quantities 
end 

그리고 따라서, selectcollection_select을 조정했습니다 사람을 도움이

<% get_quantities %> 
<%= f.select(:print_quantity, @quantities, {:prompt => "Please select..."}) %> 

희망을.

1

저는이 부분에 익숙하지가 않아요.

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select

구문 collection_select이다 (개체 방법, 컬렉션 value_method, text_method 옵션 = {} html_options = {}) 번째 파라미터를 변경한다면

(method) (청구 오브젝트에서 원하는 속성이 아닌) 실제 메소드로 변환하면 원하는대로 값을 작성할 수 있습니다.

그래도 문제가 해결되지 않으면 (또는 메소드의 속성을 대체 할 수없는 경우) 5 번째 또는 6 번째 매개 변수 value_methodtext_method을 사용하여 효과를 낼 수 있습니다. 태그에 적용해야합니다.

어쨌든,이 답변은 (내가 바라는 바대로) 올바른 방향으로 당신을 가리키는 것입니다. 왜냐하면 나는 방법이나 작동 원리가 확실하지 않기 때문입니다.

행운을 빈다.

+0

전혀 나쁜 생각이 아닙니다. 내가 조사 할게. 건배. –

+0

당신의 제안으로 나는 그것을 해결했습니다! 난 대답을하지 주석으로 솔루션을 작성하므로 제대로 형식을 지정할 수 있습니다. –

+0

듣기 좋다. :) – DavidDraughn

관련 문제