2015-05-18 3 views
0

Я стараюсь следовать this вопрос, но я застрял. В мой контроллер у меня есть:Ajax звонок с выпадающим списком

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» никогда не отображается. Может кто-то, пожалуйста, помогите!

+0

Might будь то опечатка в вашем вопросе, но вы пытаетесь отобразить частичный project_list, но в вопросе это project_list (единственное на проекте) – Marcus

+0

Спасибо Marcus. да, это было только вопросом. Исправлено сейчас! – sonalkr132

+0

Вы уверены, что запрашивается формат JS? Возможно, вы должны попробовать ': onchange => '$ .get ("/inspire/stars.js ")'' для проверки. –

ответ

0

Убедитесь, что ваш вызов Ajax запрашивает формат JS:

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

Если вы хотите, чтобы сделать Ajax позвонить вам необходимо включить:

"data-remote" => true 

См here для получения дополнительной информации

Смежные вопросы