2010-11-23 4 views
0

내가 사용하는 언어가 무엇이든 나는 항상 구분 기호로 구분 된 문자열 목록을 표시해야합니다.CONCAT_WS for Rails?

예를 들어 상품 모음이 있고 그 이름을 ', '으로 구분하여 표시해야한다고 가정합니다. 그래서 각 제품에는 '이름'속성이있는 제품 모음이 있습니다. 나는 레일스 메소드/헬퍼를 찾고 있는데 (존재하지 않는다면 레일즈 방식으로 빌드하는 아이디어를 줄 수있다.) 콜렉션을받을 것이다. 각 콜렉션 아이템에서 호출 될 속성/메소드 및 구분 기호에 대한 문자열.

하지만 "노트북, 컴퓨터, 키보드, 마우스"로 끝나기 때문에 끝 부분에 구분 기호가 포함되지 않도록하고 싶습니다. 2 개의 마지막 문자는 없어야합니다.

예 :

concat_ws(@products, :title, ", ") 
#displays: Notebook, Computer, Keyboard, Mouse 

가정하면 @products 물론 그 이름을 가진 4 제품이 있습니다.

감사합니다.

답변

1

도우미 to_sentence를 시도해야합니다. 당신이 배열이있는 경우

, 당신은

array.to_sentence과 같은 작업을 수행 할 수 있습니다. 배열에 데이터 바나나, 사과, 초콜릿이있는 경우 바코리아, 사과 및 초콜릿 이됩니다. @VP가 언급 한 바와 같이

은 이제라는 이름의 필드와 AR 모델이있는 경우, 당신은 배열 번호의 to_sentence 레일에서 잘 일을,

MyModel.all.map { |r| r.name }.to_sentence 
+0

하다는 것을 말하고,하지만 난 제품 이름의 배열을 가지고 할 수있는 방법 has_many 관계에서 오는 전체 AR 객체의 배열? – emzero

+0

내 대답을 업데이트했습니다 :-) –

1
@products.map(&:title).join(', ') 
1

처럼 뭔가를 할 수 있습니다. 그것의 코드는 여기에 있습니다 :

https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/array/conversions.rb

는 옥스포드 쉼표의 사용이 나는 to_sentence 도우미를 좋아하는 의심 :-)

+0

그래, 옥스포드 쉼표가 좋지 않아 ... 운좋게도 로캘 (support.array.last_word_connector)을 사용하여 쉽게 편집 할 수 있습니다. 어쨌든 다중 언어 사이트이기 때문에 필요합니다. – emzero