1
 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

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

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

怎么解决?谢谢!

4

3 回答 3

1

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

你的问题真的在于@masters财产。您需要将其推断为您要截断的任何字符串。

于 2014-07-14T20:50:03.083 回答
1

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

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

于 2014-07-14T20:50:17.330 回答
1

截断适用于字符串,但您使用 ActiveRecord::Relation 调用它。首先,您必须调用.first@masters或类似的方法以仅选择一条记录),然后调用 String 属性,例如.full_name

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

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

@masters = User.search_by_full_name(params[:full_name]).where(master: :true)
  .map { |master|
    truncate(master.full_name, separator: '[')
  }
于 2014-07-14T20:50:59.430 回答