Ruby: вопросы области видимости переменных - PullRequest
2 голосов
/ 04 августа 2011

Эй, Rails новичок здесь.

Раньше у меня было много вещей, происходящих на одном из моих контроллеров.Кто-то сказал мне, что хорошо иметь «толстые модели и тонкие контроллеры», поэтому я перенес некоторые вещи в модель.

В методе show моего контроллера у меня были некоторые @ переменные, которые я использовал бы в своем представлении.Теперь у меня есть эти переменные в методе в моей модели.Смогу ли я получить доступ к тем, что на мой взгляд?Если да, нужно ли вносить какие-либо корректировки?

Спасибо

Ответы [ 2 ]

5 голосов
/ 04 августа 2011

Вам нужно будет создать экземпляр вашей модели в контроллере как переменную @. Затем вы можете вызывать методы из этого представления.

например. представьте, что у вас в контроллере была длинная связка логики, которая рассчитывала кредитный балл для клиента, кульминацией которого стал

@credit_score = credit_score

и теперь вы переместили это в метод credit_score на модели Customer.

Теперь вам просто нужно

@customer = Customer.find...

в контроллере

и вы можете использовать <%= @customer.credit_score %> в представлении.

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

0 голосов
/ 05 августа 2011

Обычной практикой является определение таких переменных в контроллерах:

@object = Model.new

, чтобы позже использовать его в form_for или что-то в этом роде. Некоторые люди вместо этого используют Model.new непосредственно в представлениях. Это несколько необычно, но все же имеет смысл, особенно если учесть, что Rails просто перебирает все переменные экземпляра в вашем контроллере каждый раз, чтобы сделать их доступными в ваших представлениях

...