@modernstyle
Code GOD

Использование @var в link_to

Господа рубисты, помогите

Я пытаюсь оживить ссылку в _header формата

<%= link_to @company.name, current_company %>

Сначала получал

NoMethodError in StaticPages#about - undefined method `name' for nil:NilClass

Допер, что контроллер Static_pages знать не знает ни о каких Компаниях, и поэтому решено было изменить static pages controller на:

def home @company = Company.new end def about @company = Company.new end
И так далее. Это, однако, помогло не очень — ссылки вместо имени выглядят как

/companies/2

Как решить проблему? Можно ли это сделать без повторений в каждом методе контроллера? Спасибо!
  • Вопрос задан
  • 2812 просмотров
Решения вопроса 1
Loremaster
@Loremaster
Если нужно, чтобы переменная была доступна во всех (ну или большом количестве) методах, то можно сделать так:

before_filter :init_company
...
private

def init_company
  @company = Company.find(params[:id])
end

После этого ваша переменная становится доступна во всех методах контроллера. В случае rails 4 можно также заменить before_filter на before_action, что придаст коду большую ясность.

Судя по всему, у вас довольно много ошибок: вы зачем-то пытаетесь создавать объект, вместо того, чтобы его находить. Также во вьюхе: второй параметр в link_to должен быть вида zzz_path.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
jj_killer
@jj_killer
@company = Company.find(params[:id])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы