簡體   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