0

我正在尝试在我的 rails 应用程序中实现自动完成。我正在尝试通过 jquery 的源传递 ruby​​ 参数。这就是我想要做的。

$( "#text" ).autocomplete({
appendTo: "#searchwrapper1",
source:  h_url+"product_details/menu_search_auto/" + <%= "'#{params[:deptid]}'" %> ,
open:function() {
        $(".ui-autocomplete").mCustomScrollbar1({
            set_width : false,
            set_height : false, 
            horizontalScroll : false, 
            scrollInertia : 550, 
            scrollEasing : "easeOutCirc", 
            mouseWheel : "auto", 
            autoDraggerLength : true, 
            scrollButtons : {
                enable : false, 
                scrollType : "continuous", 
                scrollSpeed : 20, 
                scrollAmount : 40 
            }, 
        }

这是我的 route.rb 文件

match "/product_details/menu_search_auto/:deptid"=>'product_details#menu_search_auto'

控制器部分是:

def menu_search_auto
    list=[]
    if(params[:deptid].to_s == 'all')
      b1=test4.where("name LIKE ?","#{params[:term]}%")
    else
      case params[:deptid].to_i
      when 1
        b1=test1.where("name LIKE ?","#{params[:term]}%")
      when 2
        b1=test2.where("name LIKE ?","#{params[:term]}%")
      when 3
        b1=test3.where("name LIKE ?","#{params[:term]}%")
      else
      end
    end

    b1.each do |b1|
      list << {"label"=>b1.name, "value"=>b1.name, "id"=>b1.id}
    end 

    respond_to do |format|
      format.json{render :json=>list.to_json, :layout=>false}
    end
  end

但是我既不能传递参数,也不能得到任何错误。

请建议我哪里出错了??

4

2 回答 2

0

我想您在帖子中获得的代码位于带有 js(.coffee) 扩展名的视图中。

你写它的方式,“<%=”的东西被识别为js代码。

试试下面的。

在您的控制器中:

def an_action
  @foo = "something"
  respond_to do |format|
    format.js
  end 
end

在您看来:

source:  h_url+"product_details/menu_search_auto/<%= j("#{@foo}") %>"
于 2013-04-25T12:02:58.337 回答
0

我已经在 rails 布局文件中定义了那个搜索栏。我在 homepage.js 中添加了包含 autocomlpete 函数的 js 文件,其中定义了所有 js 函数。我还在 document.ready(function() 中定义了自动完成函数。我传递了如下所述的参数

source: h_url+"product_details/menu_search_auto/" + deptid1,
于 2013-04-26T05:16:36.900 回答