我有一个用户仪表板页面,左侧有类似于“项目”、“博客”等链接的侧边栏。我想要能够点击“项目”链接,然后在主区域中加载项目视图(视图将是项目的项目列表),而无需刷新页面。我正在尝试使用AJAX实现这一点,但事情并没有按计划进行。
以下是我认为它应该如何工作的方式。用户在
显然,我的做法是错误的,因为这不起作用。我做错了什么?是否有其他需要更改的代码?我使用的是Rails 3.2.13,所以在
以下是我认为它应该如何工作的方式。用户在
show.html.erb
中点击侧边栏链接。<%= link_to 'Projects', '/dash', remote: true %>
其中/dash
在config/routes.rb
文件中被配置为路由到users#show
,如下所示:
match '/dash' => 'users#show'
然后,在users_controller.rb
控制器中调用了show
动作:
def show
@user = User.find(params[:id])
@projects = @user.projects
respond_to do |format|
format.html # renders show.html.erb
format.js # renders show.js.erb
end
end
show.js.erb
文件在哪里执行。我的show.js.erb
文件只有一行代码:
$('#ajax').html("<%= escape_javascript(render(:partial => 'projects/index')).html_safe %>");
这应该修改我在show.html.erb
中的#ajax div:
<div id="ajax">
<%= render :template => 'projects/index' %>
</div>
app/views/projects/index.html.rb
会接收@projects并呈现一个列表,类似这样:
<% @projects.each do |project| %>
<p><%= project.name %></p>
<% end %>
显然,我的做法是错误的,因为这不起作用。我做错了什么?是否有其他需要更改的代码?我使用的是Rails 3.2.13,所以在
app/assets/javascripts/application.js
下的//=jquery
和//=jquery_ujs
应该已经导入了必要的jQuery和AJAX功能。