2011-11-30 3 views
0

사용자가 하나의 번호가 있어야하는 한 줄 ("설명")을 제출하게합니다.레일스의 문자열 부분에 색상을 지정하는 가장 효율적인 방법은 무엇입니까?

현재 사용자가 "253 foo foo bar bar"설명의 시작 부분에 번호를 제출하도록했습니다. 그러나 숫자를 어디에서나 변경할 수 있도록 변경하려고합니다. "foo foo foo 253 bar bar bar", "253 foo foo bar bar", "bar bar foo 253"

숫자의 CSS 클래스가 다릅니다. 내 목표는 설명 문자열을 표시하고 숫자 주위에 태그를 감싸는 것입니다. 이렇게하려면 Javascript/레일을 사용하여 모델/뷰를 어떻게 구성해야합니까?

다음은 내가 생각한 가능성입니다. MVC를 보존하고 뷰를 렌더링 할 때 성능을 최대화하고 싶습니다. 사용자가 백엔드에서 처리되는 한 줄을 제출하고 있습니다. 사용자가 제출하면, 두 부분으로 설명 문자열을 분할 - 지금이 순간, 내 데이터베이스는 Item.description

  1. Item.description_beforeItem.number, Item.number, Item.description_after 있습니다. 보기에서 성능 및 가독성이 좋을 것 같습니다. <%= Item.description_before + "#{Item.number}" + Item.description_after 할 수 있습니다. 그러나 또한 설명이 두 부분으로 나뉘는 것이 이상하게 보입니다.

  2. Item.number_position - 문자열에서 숫자의 위치를 ​​기록하고 다음 문자열의 n 번째 문자 주위에 <class> 태그를 추가 루비 문자열 조작을 사용합니다.

  3. 자바 스크립트를 사용하여 번호를 찾습니다.하지만 25 개의 게시물을 나열하면 페이지가로드 될 때마다이 함수를 25 번 호출해야하며 문제가되는 것처럼 보입니다.

그러나 나는 확실히 이것에 대한 전문가가 아니기 때문에 새로운 제안을 찾고 있습니다. 또는 위의 옵션 중 하나를 수행했다면 어떤 대답도 도움이 될 것입니다. 감사!

답변

2

정규 표현식을 수행하는보기 도우미는 훌륭하고 빠릅니다. 다음과 같음 :

string.gsub(/[0-9]+/, '<span style="color:red">$1</span>') 
관련 문제