【问题标题】:Rails form select truncate valueRails 表单选择截断值
【发布时间】:2017-11-23 06:31:43
【问题描述】:

我有一个使用 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 的结果是 => 无

我错过了什么吗?

【问题讨论】:

  • 可能内容字段中没有任何内容
  • 你必须试试这个Question.all.map{|q| [q.text.truncate(5),q.id] }试试这个而不是Question.all
  • 不确定在任何情况下截断 (apidock.com/rails/String/truncate) 是否会返回 nil
  • 您能否使用 pry 检查self.content.truncate(140) 的不同部分的结果是什么?
  • 内容字段中有内容。

标签: ruby-on-rails methods


【解决方案1】:

内容字段中肯定有一些东西,我在控制台中检查并能够获得一个值。我还可以在控制台中使用 sample_question.content.truncate(140) 获得结果

我还添加了 pry gem,得到了相同的结果,Question.first.truncated_content 的值为 nil。

我使用了 uzaif 的建议,即在我的收藏选择中使用“地图”而不是 Question.all。它创建了一个数组数组,并且 :id 和 :content 不在映射数组中。它产生了 [["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

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 2019-05-27
    • 1970-01-01
    • 2014-11-15
    • 2022-09-28
    • 2019-05-21
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多