2017-11-23 4 views
0

을 형성 :레일 내가 다음과 같이 레일이 선택 태그를 사용하여 양식이 선택 잘라 내기 값

<%= f.collection_select(:question_id, Question.all, :id, :content) %> 

내 목표는 형태의 드롭 다운 목록에서 컨텐츠의 길이를 단축하는 것입니다. 그래서, 방법을 추가로 내 양식을 변경 : 내가 가진 내 질문 모델에서

<%= f.collection_select(:question_id, Question.all, :id, :truncated_content) %> 

: 내 콘솔에서

def truncated_content 
self.content.truncate(140) 
end 

을 question.truncated_content의 결과는 => nil을

입니다

내가 누락 된 항목이 있습니까?

+0

어쩌면 콘텐츠 필드에 아무 것도 없습니다. – trueinViso

+0

당신은이'Question.all.map {| q | [Q.text.truncate (5), q.id]}''Question.all' 대신에 이것을 시도하십시오 – uzaif

+0

truncate (https://apidock.com/rails/String/truncate)가'nil'을 리턴 할 지 확신하지 못합니다 어쨌든. –

답변

0

콘텐츠 필드에 분명히 뭔가가 있었는데 콘솔에 체크인하여 값을 얻을 수있었습니다. sample_question.content.truncate (140)

도 내 콘솔에서 결과를 얻을 수있었습니다. 또한 pry gem을 추가했으며 Question.first.truncated_content에 대해 동일한 결과, nil 값을 받았습니다.

나는 uzaif의 제안으로 Question.all 대신 "map"을 내 컬렉션 select에서 사용했습니다. 배열 배열을 만들고 : id 및 : 내용이 매핑 된 배열에 없습니다. [[ "Lo ...", 1]]

https://apidock.com/ruby/Enumerable/map 함께 해시 병합을 시도하고 인덱스가 성공하지 못했습니다.

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-truncate 잘라 내기 예제를 복사하여 붙여 넣었습니다. 내 모델의 메소드는 다음과 같습니다.

def truncated_content 
    truncate(self.content, length: 70) 
end 

감사합니다.