Je migre un site Web de Rails 2 (plus récent) vers Rails 3 (beta2).
Test avec Ruby 1.9.1p378 et Ruby 1.9.2dev (2010-04-05 tronc 27225)Rails 3 - le retour de rendement ou le rappel ne sera pas appelé <% = yield (: sidebar) || render ('shared/sidebar')%>
Coincé dans une situation, je ne sais pas quelle partie va bien travailler. Suspect yield
est le problème, mais ne sais pas exactement.
Dans ma mise en page Fichiers j'utiliser la technique suivante assez souvent:
app/views/layouts/application.html.erb
:
<%= yield(:sidebar) || render('shared/sidebar') %>
Pour exemple l'aspect partiel comme:
app/views/shared/_sidebar.html.erb
:
<p>Default sidebar Content. Bla Bla</p>
Maintenant, il est temps pour la partie clé!
Dans n'importe quelle vue, je souhaite créer un bloc content_for
(facultatif). Cela peut contenir une pièce de HTML, etc. exemple ci-dessous. Si ce bloc est défini, le code HTML à l'intérieur doit apparaître dans application.html.erb
.
Si ce n'est pas le cas, Rails doit rendre le partiel à shared/_sidebar.html.erb
sur le côté droit.
app/views/books/index.html.erb
:
<% content_for :sidebar do %>
<strong>You have to read REWORK, a book from 37signals!</strong>
<% end %>
Vous avez l'idée. Espérons. Cette technique a bien fonctionné dans n'importe quelle application Rails 2.x.
Maintenant, dans Rails 3(beta2) seule la partie yield
fonctionne.
|| render('shared/sidebar')
Le côté or
ne traitera pas par des rails ou peut-être rubis.
Merci pour la saisie et le temps!
Ceci est tellement sale –