2013-04-25 60 views
0

我試圖在我的rails應用程序中實現自動完成。我試圖通過jquery的源碼傳遞ruby參數。這是我想要做的。在jquery auto中傳遞參數完成

$("#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 

但我既不是可以傳遞參數,也沒有我得到任何錯誤。

請問我要去哪裏錯了?

+0

也許你追加如前所述一些代碼(例如,product_details_controller#menu_search_auto和這個動作在config/routes.rb中的路由),所以我們可以看到更多。 另一個提示:添加服務器日誌(請求和響應),以便我們可以看到傳遞的內容以及爲什麼 – 2013-04-25 12:12:14

+0

@erndenson我編輯過 – user2218532 2013-04-25 12:28:20

+0

控制器和路由似乎沒問題 我認爲這個參數沒有通過,因爲你的js中嵌入的ruby(erb)有問題 也許它是'更好的辦法是改變那裏的單引號和雙引號,並檢查參數是否沒有設置。 你可以<%=將某個參數%>放在你的js的某個地方,看看它是否被解釋。 js是否具有.erb擴展名? – 2013-04-25 12:35:09

回答

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}") %>" 
+0

我試圖將參數「department_id」傳遞給名爲「menu_search_auto」的控制器操作。我不想訪問控制器的變量。 – user2218532 2013-04-25 12:09:10

+0

你如何獲得想要傳遞給控制器​​的department_id的值?如果您知道該值,則將其作爲查詢參數添加到url:''foo/bar?department_id ='+ depid' – 2013-04-25 12:17:14

+0

我可以知道什麼是foo/bar嗎?請解釋,因爲我是新手 – user2218532 2013-04-25 12:30:13

0

我已經定義,在搜索欄中軌道佈局文件。我添加了含有homepage.js autocomlpete函數,其中所有的JS功能defined.Also我裏面的document.ready定義的自動完成功能(功能()的js文件,我傳遞的參數如下

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