如何在控制器中使用'truncate'方法?

时间:2014-07-14 20:41:46

标签: ruby-on-rails ruby ruby-on-rails-4 pg-search

 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

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

  

未定义的方法`truncate&#39; for ActiveRecord :: Relation []

怎么解决呢? 谢谢!

3 个答案:

答案 0 :(得分:1)

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

你的问题确实存在于@masters财产中。你需要将它推导成你试图截断的任何字符串。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

Truncate适用于Strings,但您可以使用ActiveRecord :: Relation调用它。首先,您必须在.first上调用@masters(或者类似于仅选择一条记录),然后调用.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: '[')
  }