О том, как представления должны получить свои переменные - PullRequest
3 голосов
/ 06 мая 2011

В мире передового опыта, когда вы разрешаете представлению наследовать переменные экземпляра контроллера, и когда вы явно передаете их в хеш-код localals?

Ответы [ 2 ]

5 голосов
/ 06 мая 2011

Любые переменные экземпляра, которые вы определяете в вашем контроллере, автоматически распространяются на представление, поэтому нет необходимости передавать их явно. Это работает не только для вашего начального представления, но и для любых частичных элементов, отображаемых в процессе.

Вам нужно будет отправлять :locals переменные, когда вы вызываете один и тот же фрагмент, но вам нужно, чтобы он отображал разные вещи, которые не могут быть приняты с :object или :collection.

Вот пример неправильного использования переменных экземпляра:

# Bad form
<%- @foo = 'example1' %>
<%= render(:partial => 'bar') %>
<%- @foo = 'example2' %>
<%= render(:partial => 'bar') %>

Лучший способ таков:

<%= render(:partial => 'bar', :locals => { :foo => 'example1' }) %>
<%= render(:partial => 'bar', :locals => { :foo => 'example2' }) %>

Разница в том, что вы увидите переменную в частичном виде foo вместо @foo. Помните, что локальные переменные могут быть неопределенными, если они не переданы, что может вызвать проблемы, поэтому тщательно протестируйте.

0 голосов
/ 06 мая 2011

Хорошей практикой является установка переменных в ваших контроллерах.

Вы не должны передавать их из контроллера, потому что они будут видны автоматически

#your_controller
@name = "Pedro"

#your view
Hello, <%= @name %>!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...