我试图在我的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
但我既不能传递参数,也不会收到任何错误。
请建议我哪里出错?
答案 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,