私が読んでいる本の中で著者がそれについて話す方法のために、「テンプレート」を「レンダリングする」というアイデアについてちょっと混乱しました。Rails:「テンプレートをレンダリングする」のはどういう意味ですか?
"テンプレートをレンダリングする"という私の元来の理解は、Railsが画面上で表示される/ビューアに表示される(部分的なレンダリングの仕方で)コンテンツを提供していることを意味していましたが、 "テンプレートをレンダリングする"という概念を使用しているように見えます。文脈で説明させてください。
この本(実際のレール3)は、従来のlayouts/application.html.erb
ファイルを使用してページレイアウトを設定し、views/tickets/show.html.erb
などの別の表示ページに「収穫」します。これはまったく簡単です。
このビュー内には、views/tickets/show.html.erb
という部分がレンダリングされています(これも簡単な概念です)。
<div id='tags'><%= render @ticket.tags %></div>
は今、この部分の中に、権限のあるユーザーは、「チケット」から「タグ」を取り除くことができるように設計された「tags_controller.rb」の「削除」メソッドの呼び出しは、AJAXを使用して、そこにあります私たちのモックプロジェクト管理アプリケーションで。今ここに
<% 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 %>
(データベース内のチケットからタグの関連付けを解除)タグコントローラ内のアクションを「削除」である...
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
この削除アクションの終わりに、著者はもともとrender :nothing => true
を含んでいましたが、彼は「あなたはテンプレートをレンダリングするつもりだから」と言って行動を改訂しました。 ここで私は混乱するでしょう
彼がこのアクションをレンダリングするテンプレートは、 "remove.js.erb"です。その中には1行のjqueryしかありません。 (つまり、ユーザが画面に表示したタグ)を、データベース内のチケットから切り離しました。
$('#tag-<%= @tag.name.parameterize %>').remove();
私は、「テンプレートをレンダリング」を読ん私は、アプリケーションがページにコンテンツを挿入することを期待しますが、コントローラで「削除」アクションによってレンダリングされたテンプレートは1つの要素を削除するjqueryの関数を呼び出しますページ。
「テンプレート」が「レンダリング」されている場合は、別のテンプレートを削除して(新しいテンプレートのためのスペースを確保するため)、コンテンツが「レンダリング」されることを期待しています部分がレンダリングされます。この質問にjqueryがある状況で "テンプレート"が "レンダリング"されたときに実際に何が起こっているのかを明確にすることはできますか?それは実際にユーザーの前に新しいページを置いているのですか(私は何らかの物理ページがレンダリングされることを期待していました)
+1よく書かれた質問 – bragboy