【发布时间】:2015-05-19 00:25:30
【问题描述】:
我试图关注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”。有人可以帮忙吗!
【问题讨论】:
-
可能是您的问题中的拼写错误,但您正在尝试渲染部分项目列表,但在问题中它是 project_list(项目单数)
-
谢谢马库斯。是的,这只是问题。现已更正!
-
你确定请求的是JS格式吗?也许你应该尝试
:onchange => '$.get("/inspire/stars.js")'来验证。 -
是的!那完成了工作:D @sebastian 你想回答以便我可以接受吗?
标签: javascript jquery ruby-on-rails ajax