Ruby on rails 如何使用方法';截断';在控制器中? 类搜索控制器

Ruby on rails 如何使用方法';截断';在控制器中? 类搜索控制器,ruby-on-rails,ruby,ruby-on-rails-4,pg-search,Ruby On Rails,Ruby,Ruby On Rails 4,Pg Search,这是我的控制器。他返回错误 ActiveRecord::Relation[]的未定义方法“truncate” 如何解决? 谢谢!您正在尝试将truncate方法应用于数组,但这不起作用,因为truncate仅适用于字符串 您的问题实际上存在于@masters属性中。您需要将其推断为您试图截断的任何字符串。ActionView::Helpers中的truncate方法仅适用于字符串 @masters是一个活动记录关系对象,因此该方法不起作用。Truncate适用于字符串,但您可以使用ActiveR

这是我的控制器。他返回错误

ActiveRecord::Relation[]的未定义方法“truncate”

如何解决?
谢谢!

您正在尝试将truncate方法应用于数组,但这不起作用,因为truncate仅适用于字符串


您的问题实际上存在于
@masters
属性中。您需要将其推断为您试图截断的任何字符串。

ActionView::Helpers中的truncate方法仅适用于字符串


@masters是一个活动记录关系对象,因此该方法不起作用。

Truncate适用于字符串,但您可以使用ActiveRecord::Relation调用它。首先必须调用
。首先在
@masters
上调用
(或类似于只选择一条记录),然后调用字符串属性,如
.full\u name

 class SearchingController < ApplicationController
  include ActionView::Helpers::TextHelper
  def index
    @masters = User.search_by_full_name(params[:full_name]).where(master: :true)
    @courses = Course.searching_courses(params[:course_title])
    @masters = truncate(@masters, separator: '[')
  end

end
您也可以在每条记录上调用它:

@masters = truncate(
  User.search_by_full_name(params[:full_name]).where(master: :true)
    .first.full_name
  , separator: '['
)

我很好奇,你想用这个方法实现什么?可能有一些更好的选择,你可以将关系对象的属性转换为stringsit。这很难用外语解释
@masters = User.search_by_full_name(params[:full_name]).where(master: :true)
  .map { |master|
    truncate(master.full_name, separator: '[')
  }