如果搜索模型没有命中,请调用javascript文件

时间:2013-08-15 21:47:37

标签: ruby-on-rails ruby-on-rails-3

我在模特上搜索:

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

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

index.js.erb的:

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

我该怎么做?

2 个答案:

答案 0 :(得分:1)

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

型号:

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

控制器

@checker= Model.checkSearch(search)

在视图中,您可以检查@checker是否与null不同并重新部分

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

更多想到你可以在第一个模型方法中返回一个数组,第一个位置有一个bollean,第二个位置有一个活动记录对象。

希望我给你一些方向!

答案 1 :(得分: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