Я стараюсь следовать 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» никогда не отображается. Может кто-то, пожалуйста, помогите!
Might будь то опечатка в вашем вопросе, но вы пытаетесь отобразить частичный project_list, но в вопросе это project_list (единственное на проекте) – Marcus
Спасибо Marcus. да, это было только вопросом. Исправлено сейчас! – sonalkr132
Вы уверены, что запрашивается формат JS? Возможно, вы должны попробовать ': onchange => '$ .get ("/inspire/stars.js ")'' для проверки. –