2017-11-23 2 views
0

を形成し、次のようにselectタグを使用して形成:Railsは私がレールを持って選択切り捨て値

<%= 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の代わりに自分のコレクションselectに "map"を使用しました。配列の配列が作成され、idと:contentはマップされた配列に含まれていませんでした。

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 

ありがとうございました!

関連する問題