繁体   English   中英

带下拉列表的Ajax调用

[英]Ajax call with dropdown list

我试图遵循这个问题,但是我被困住了。 在我的控制器中,我有:

 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”。 有人可以帮忙吗?

确保您的Ajax调用请求JS格式:

= collection_select :project, :id, Project.all, :id, :name, {}, {:onchange => '$.get("/inspire/stars.js")'}

如果要进行ajax调用,则需要包括:

"data-remote" => true

看到这里更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM