2013-06-27 2 views
2

Я был в процессе миграции рельсов 2 приложения к рельсам 3. При этом я пришел навстречу виртуозному поведению с выходом. У меня есть фрагмент кода, где я получаю возвращаемое значение доходности.Доходность Rails 2 vs Rails 3

x= true if yield 'xyz' 

Так что если content_for существует для 'xyz', значение x будет установлено true иначе ничего не произойдет. Он отлично работает в рельсах 2. Но в рельсах 3 всегда верно значение x, потому что рельсы возвращают пустую строку, даже если «xyz» недоступно.

В Rails 2:

yield 'xyz' # nil if xyz is not available 
yield 'xyz' # "hi" if xyz is available. "hi" is the rendered content 

В Rails 3:

yield 'xyz' # "" if xyz is not available 
yield 'xyz' # "hi" if xyz is available. "hi" is the rendered content 

Почему это изменение? render_template полностью изменено?

ответ

0

Я не могу ответить на ваши вопросы, но я бы рекомендовал использовать этот подход:

if content_for?(:xyz) 
    yield(:xyz) 
    x = true 
end 
+0

Я вот что я наконец-то закончилась. x = true, если content_for? ('xyz') –