我试图关注this问题,但我被困住了。 在我的控制器中,我有:
def index
if params[:sort] == 'stars'
@projects = [Project.first]
else
@projects = Project.all
end
respond_to do |format|
format.html
format.js { render 'populate_projects', :formats => [:js] }
end
end
路线中的:
get '/inspire/:sort' => 'projects#index'
在视图中:
= collection_select :project, :id, Project.all, :id, :name, {}, {:onchange => '$.get("/inspire/stars")'}
%div#normal
= render 'projects_list'
%div#stars{ style: 'display: none' }
我的_projects_list.html.haml有:
%div
- @projects.each do |project|
%div
%p
#more code...
最后在populate_projects.js.haml:
:plain
$("#stars").html("#{escape_javascript render(partial: 'projects/projects_list')}");
$("#normal").hide();
$("#stars").show();
当我测试ajax调用是否正常时,该程序可能没有意义。然而,应该发生的是当我改变下拉状态时,必须进行一次ajax调用,这会调用“propulate.js.haml”。项目清单必须从全部变为第一,但不是。在我的终端中,我可以看到正在拨打电话但是“populate.js.haml”#39;永远不会呈现。有人可以帮忙!
答案 0 :(得分:0)
确保您的Ajax调用请求JS格式:
= collection_select :project, :id, Project.all, :id, :name, {}, {:onchange => '$.get("/inspire/stars.js")'}
答案 1 :(得分:0)