0

我在模型上进行搜索:

def self.search(search)
if search
    where('Bezeichnung LIKE?', "%#{search}%")
else
   all
end
end

我想改变的是,当搜索没有命中时,它会在 icd/index.js.erb 中触发一个 javascript 文件

索引.js.erb:

$('#chapter_list').html("<%= escape_javascript(render(:partial => 'icd1')) %>");

我怎样才能做到这一点?

4

2 回答 2

1

我会做这样的事情,我会创建另一个模型方法,如下所示:

模型:

def checkSearch(search)
  if search
     where('Bezeichnung LIKE?', "%#{search}%")
  end
end

控制器

@checker= Model.checkSearch(search)

在视图中,您可以检查 @checker 是否不同于 null 和 redner 部分

我知道这种方法会查询数据库两次,但只是一个开始。

多想一下,您可以在第一个模型方法中返回一个数组,其中第一个位置是布尔值,第二个位置是活动记录对象。

希望我给你一些方向!

于 2013-08-15T22:29:30.507 回答
1

大概这个类方法(self.search)在模型上。由于您的控制器是您返回响应的地方,因此您需要让您的控制器使用 javascript 代码进行响应。

就像是:

def index
  results = Model.search(params[:search])
  respond_to |format| do
    if results
      format.html { render 'index.html.erb' }
    else
      format.js { render 'index.js.erb' }
    end
  end
end
于 2013-08-15T22:58:45.690 回答