Tôi đã trở nên hơi nhầm lẫn về ý tưởng "dựng hình" một "mẫu" do cách tác giả nói về nó trong sách tôi đang đọc .Đường ray: Ý nghĩa thực sự của việc "hiển thị mẫu" là
Sự hiểu biết ban đầu của tôi về "hiển thị mẫu" là Rails đang cung cấp nội dung được xem trên màn hình/trình bày cho người xem (theo cách mà một phần được hiển thị) nhưng cuốn sách tôi đọc dường như đang sử dụng khái niệm "dựng hình mẫu" cũng có nghĩa là một cái gì đó khác. Hãy để tôi giải thích trong ngữ cảnh
Sách này (đường ray 3 trong hành động) thiết lập bố cục trang bằng cách sử dụng tệp layouts/application.html.erb
thông thường và sau đó "sản xuất" cho các trang xem khác nhau, chẳng hạn như views/tickets/show.html.erb
để thêm nội dung vào màn hình. đó là tất cả đơn giản ..
Trong chế độ xem này views/tickets/show.html.erb
, có hiển thị một phần (cũng là khái niệm đơn giản).
<div id='tags'><%= render @ticket.tags %></div>
Bây giờ trong phần này có nghĩa là, sử dụng ajax, một cuộc gọi đến một phương pháp "loại bỏ" trong "tags_controller.rb" được thiết kế để cho phép người dùng có thẩm quyền để loại bỏ một "tag" từ một "vé" trong ứng dụng quản lý dự án giả lập của chúng tôi.
<% if can?(:tag, @ticket.project) || current_user.admin? %>
<%= link_to "x", remove_ticket_tag_path(@ticket, tag),
:remote => true,
:method => :delete,
:html => { :id => "delete-#{tag.name.parameterize}" } %>
<% end %>
Bây giờ đây là "loại bỏ" hành động trong bộ điều khiển thẻ (mà disassociates thẻ từ vé trong cơ sở dữ liệu) ...
def remove
@ticket = Ticket.find(params[:ticket_id])
if can?(:tag, @ticket.project) || current_user.admin?
@tag = Tag.find(params[:id])
@ticket.tags -= [@tag]
@ticket.save
end
end
end
Vào cuối của hành động loại bỏ này, tác giả ban đầu bao gồm render :nothing => true
, nhưng sau đó ông đã sửa đổi hành động vì, như ông nói, "bạn sẽ làm cho nó hiển thị mẫu." Đây là nơi tôi bị nhầm lẫn
Mẫu mà hành động này hiển thị là "remove.js.erb", chỉ có một dòng jquery bên trong, mục đích là xóa "thẻ" khỏi trang (tức là thẻ mà người dùng nhìn thấy trên màn hình) bây giờ nó đã bị hủy liên kết khỏi vé trong cơ sở dữ liệu.
$('#tag-<%= @tag.name.parameterize %>').remove();
Khi tôi đọc "render một mẫu" Tôi hy vọng các ứng dụng để được chèn nội dung vào trang web, nhưng các mẫu được đưa ra bởi các "loại bỏ" hành động trong bộ điều khiển chỉ gọi một hàm jquery mà loại bỏ một phần tử từ trang.
Nếu một "mẫu" được "hiển thị", tôi đang mong đợi một mẫu khác bị xóa (để tạo chỗ cho mẫu mới) hoặc tôi đang mong đợi nội dung được "hiển thị" theo cách một phần được trả lại. Bạn có thể làm rõ những gì đang thực sự xảy ra khi một "mẫu" được "trả lại" trong tình huống với jquery trong câu hỏi này? Có thực sự đặt một trang mới ở phía trước người dùng (tôi mong đợi một số loại trang vật lý được hiển thị)
+1 cho câu hỏi hay bằng văn bản – bragboy