在jquery中完成传递参数

时间:2013-04-25 11:38:42

标签: jquery ruby-on-rails

我试图在我的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

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

请建议我哪里出错?

2 个答案:

答案 0 :(得分:0)

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

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

请尝试以下操作。

在您的控制器中:

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

并在您看来:

source:  h_url+"product_details/menu_search_auto/<%= j("#{@foo}") %>"

答案 1 :(得分:0)

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

source: h_url+"product_details/menu_search_auto/" + deptid1,