Tôi có trang tổng quan của người dùng ở bên trái có thanh bên có các liên kết như Dự án, Blog, v.v. Tôi muốn có thể nhấp vào liên kết như liên kết "Dự án" và sau đó trong khu vực chính, chế độ xem cho các dự án sẽ tải lên (xem sẽ là danh sách các dự án có dấu đầu dòng) mà không phải làm mới trang. Tôi đang cố gắng để làm điều này xảy ra với AJAX, nhưng mọi thứ không hoạt động.Gọi AJAX để hiển thị một phần trong Rails 3
Đây là cách tôi cho rằng nó hoạt động. Người dùng nhấp chuột vào liên kết bên trong show.html.erb
<%= link_to 'Projects', '/dash', remote: true %>
nơi /dash
được cấu hình để định tuyến cho người dùng # hiển thị trong file config/routes.rb
như thế này:
match '/dash' => 'users#show'
Và sau đó, hành động show
được gọi trong users_controller.rb
bộ điều khiển:
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
Nơi thực hiện show.js.erb
. tập tin show.js.erb
tôi có này một dòng:
$('#ajax').html("<%= escape_javascript(render(:partial => 'projects/index')).html_safe %>");
Và đó là nghĩa vụ phải sửa đổi div #ajax trong tôi show.html.erb
:
<div id="ajax">
<%= render :template => 'projects/index' %>
</div>
Các app/views/projects/index.html.rb
mất trong @projects và đưa ra một danh sách, như thế này:
<% @projects.each do |project| %>
<p><%= project.name %></p>
<% end %>
Rõ ràng, tôi đang làm điều sai vì điều này không hoạt động. Tôi đang làm gì sai? Có một số mã tôi cần phải thay đổi ở nơi khác? Tôi đang ở trên Rails 3.2.13, do đó, các dòng //=jquery
và //=jquery_ujs
dưới app/assets/javascripts/application.js
đáng lẽ phải nhập chức năng jQuery và AJAX cần thiết.